Setting Up Jekyll with Minima
Jekyll is a static site generator that turns Markdown files into a fully functional blog. This post walks through getting a Jekyll site up and running with the default Minima theme.
Prerequisites
You’ll need Ruby installed. Verify with:
ruby -v
gem -v
Then install Bundler if you don’t have it:
gem install bundler
Creating a New Site
gem install jekyll
jekyll new my-blog
cd my-blog
This scaffolds a site with the Minima theme, a sample post, an About page, and a Gemfile ready to go.
Running Locally
bundle install
bundle exec jekyll serve
Your site will be available at http://localhost:4000. Jekyll watches for file changes and rebuilds automatically –no restart needed for most edits. The exception is _config.yml: changes there require restarting the server.
Project Structure
my-blog/
├── _config.yml # site-wide settings (title, URL, theme, plugins)
├── _posts/ # blog posts
├── index.markdown # home page
├── about.markdown # about page
├── Gemfile # Ruby dependencies
└── _site/ # generated output (don't edit directly)
Writing Posts
Posts live in _posts/ and must follow this naming convention:
YYYY-MM-DD-your-title.markdown
Each post starts with front matter:
---
layout: post
title: "My First Post"
date: 2026-02-18 12:00:00 +0000
categories: general
---
Your content here.
Jekyll uses the filename date and the date field in front matter –keep them consistent.
Configuring the Site
Open _config.yml and update the basics:
title: My Blog
email: you@example.com
description: A short description of what this blog is about.
url: "https://yourdomain.com"
For social links, Minima supports twitter_username and github_username out of the box.
Customising Minima
Minima’s layouts and styles come from the gem, but you can override any file by creating a local copy with the same path. To find what’s available:
bundle info --path minima
For example, to override the footer, copy _includes/footer.html from the gem into your own _includes/ directory and edit it there.
Building for Production
bundle exec jekyll build
The output goes into _site/. Upload its contents to any static host –GitHub Pages, Netlify, or a plain web server all work.