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.