Personal blog of Jae Wook Kim β DevOps Engineer. Built with Jekyll, hosted on GitHub Pages.
π Live site: https://iamjaekim.github.io
- Tech Stack
- Project Structure
- Local Development
- Writing a New Post
- Post Front Matter Reference
- Features
- Configuration
- Deployment
| Tool | Purpose |
|---|---|
| Jekyll | Static site generator |
| GitHub Pages | Hosting |
| Rouge | Syntax highlighting |
| jekyll-seo-tag | SEO meta tags |
| jekyll-sitemap | Auto-generated sitemap |
| jekyll-feed | RSS feed |
| jekyll-paginate | Post pagination |
| Utterances | GitHub-based comments |
| Inter + JetBrains Mono | Fonts (via Google Fonts) |
.
βββ _config.yml # Site-wide configuration
βββ _layouts/
β βββ default.html # Base layout (header, footer, dark mode)
β βββ post.html # Individual post layout (with sidebar + comments)
β βββ page.html # Static page layout (About, etc.)
βββ _includes/
β βββ meta.html # SEO meta tags, Open Graph, Twitter Card
β βββ analytics.html # Google Analytics GA4
β βββ comments.html # Utterances comments (GitHub Issues)
β βββ sidebar.html # Tag cloud + recent posts sidebar
β βββ tags.html # Inline tag pills for posts
β βββ favicon.html # Favicon link tags
βββ _posts/ # Blog posts (Markdown)
βββ _sass/
β βββ _variables.scss # Design tokens, CSS custom properties, dark mode vars
β βββ _highlights.scss # Syntax highlighting (light + dark themes)
β βββ _reset.scss # CSS reset
β βββ _svg-icons.scss # Footer icon styles
βββ _data/
β βββ tags.yaml # Allowed tag list
β βββ authors.yaml # Author definitions
βββ images/ # Post images and favicon
βββ style.scss # Main stylesheet entry point
βββ index.html # Homepage (paginated post list)
βββ about.md # About page
βββ robots.txt # Search engine crawl rules
βββ sitemap.xml # XML sitemap
βββ feed.xml # RSS feed
βββ POST_TEMPLATE.md # Front matter reference (not published)
- Ruby (managed via
asdforrbenv) - Bundler
bundle installbundle exec jekyll serve --livereloadThen open http://localhost:4000.
bundle exec jekyll buildOutput goes to _site/.
- Create a file in
_posts/namedYYYY-MM-DD-your-post-title.md - Add front matter (see below)
- Write content in Markdown
- Commit and push to
mainβ GitHub Pages builds automatically
---
layout: post
title: "Your Post Title"
description: "One or two sentences summarising the post for SEO."
date: 2026-02-23T10:00:00.000Z
tags:
- aws
- devops
comments: true
---
Your content here...| Field | Required | Description |
|---|---|---|
layout |
β | Always post |
title |
β | Displayed title. Use Title Case and wrap in quotes. |
description |
β | 1β2 sentences for meta description, OG, and Twitter card. |
date |
β | ISO 8601 format, e.g. 2026-02-23T10:00:00.000Z |
tags |
β | Array. See _data/tags.yaml for the current tag list. |
lastmod |
β | Last-modified date shown in the post. ISO 8601. |
image |
β | Absolute path to cover image, used for OG/Twitter cards. Falls back to /images/default.svg. |
keywords |
β | Additional SEO keywords array. Falls back to tags if omitted. |
comments |
β | true (default) or false to disable Utterances on a post. |
Edit _data/tags.yaml and add the tag name as a new list item.
jekyll-seo-taggenerates<title>,<meta name="description">, canonical URL, and JSON-LD structured data automatically.- Per-post Open Graph and Twitter Card tags are in
_includes/meta.html. - Google site verification meta tag is set via
google_site_verificationin_config.yml. sitemap.xmlcovers all posts and pages;robots.txtallows full crawl.
- Defaults to the OS preference (
prefers-color-scheme). - User preference is persisted in
localStorage. - Toggle button in the header (π / βοΈ).
- All colours are CSS custom properties under
[data-theme="dark"]in_sass/_variables.scss. - Utterances comments theme syncs with the site theme automatically.
- Rouge is used server-side (no client JS required).
- Light theme mirrors GitHub's syntax colours; dark theme mirrors GitHub Dark.
- Line numbers are enabled globally via
kramdownconfig in_config.yml.- To disable line numbers on a single block, use a plain fenced code block β line numbers require the
linenosoption or the kramdown table mode.
- To disable line numbers on a single block, use a plain fenced code block β line numbers require the
- Backed by GitHub Issues on this repository.
- Enabled by default on all posts (
defaultsin_config.yml). - Disable per-post with
comments: falsein front matter. - Change the repo, label, or theme in
_config.ymlundercomments.utterances.
- Tag cloud (all unique tags across posts).
- 5 most recent posts.
- On mobile the sidebar appears above the post list.
- Google Analytics GA4 (
G-MJT8MKP4BN). Update the ID in_config.ymlundergoogle_analytics.
All site-wide settings live in _config.yml. Commonly changed values:
name: Jae Kim # Site name in header + SEO
description: "..." # Site tagline
url: https://iamjaekim.github.io # Full URL (no trailing slash)
google_analytics: "G-XXXXXXXXXX" # GA4 Measurement ID
google_site_verification: "..." # Google Search Console verification code
comments:
utterances:
repo: iamjaekim/iamjaekim.github.io # GitHub repo for Utterances
issue_term: pathname
label: blog-comment
paginate: 10 # Posts per page on homepagePush to the main branch. GitHub Pages triggers a Jekyll build automatically.
Required GitHub settings (Settings β Pages):
- Source:
Deploy from a branch - Branch:
main// (root)
All plugins used (jekyll-sitemap, jekyll-feed, jekyll-paginate, jekyll-seo-tag) are on the GitHub Pages whitelist and require no extra configuration.