Backend development blog by DoYoon Kim — notes on algorithms, data structures, Kotlin, Java, Spring Boot, and system design.
Live: doodoo3804.github.io
- Static Site Generator: Jekyll 4 (kramdown GFM, jekyll-paginate)
- Styling: SCSS single pipeline (
css/main.scss→_sass/partials, compiled & compressed by Jekyll) + minimalcss/grid.css - JavaScript: Vanilla JS modules (no jQuery), minified via Grunt (
js/custom.js→js/custom.min.js) - Search: Pagefind (static index built at deploy time)
- OG Images: Auto-generated per post with sharp (
scripts/generate-og-images.js) - Hosting: GitHub Pages (via GitHub Actions CI/CD)
- Fonts: Inter, Plus Jakarta Sans, JetBrains Mono (Google Fonts)
- Icons: Custom SVG sprite (
_includes/icons.svg)
- Dark mode with system preference detection and manual toggle
- PWA support (service worker, offline page, Web App Manifest)
- Full-text search overlay with keyboard shortcuts
- Series navigation for multi-part posts
- Tag-based category filtering on homepage
- Featured post hero section
- Reading progress bar and estimated read time
- Code block enhancements (language labels, copy button, line numbers)
- Responsive card-based layout
- Related posts and breadcrumb navigation
- Share buttons (copy link, X/Twitter, LinkedIn)
- Mobile floating share bar and mobile TOC
- SEO optimized (Open Graph, Twitter Card, JSON-LD structured data)
- Back-to-top button
- Category page with unique color accent per category
- RSS feed with full content and author metadata
- CSS color token system (
--color-accent,--color-link, etc.) for consistent theming
Specific pages can be password-protected using StatiCrypt. This encrypts the page content client-side so a password prompt appears before the content is shown.
How to protect a page: Add protected: true to the page's front matter:
---
layout: page
title: My Secret Page
protected: true
---How to build with encryption:
PASSWORD=mypassword make buildThis runs jekyll build then encrypts all pages marked protected: true in _site/.
Note: This is client-side encryption. It protects against casual access but not determined attackers who inspect the page source. Do not use it for highly sensitive data.
The site is automatically built and deployed via GitHub Actions on every push to master. The workflow builds Jekyll, encrypts protected pages with StatiCrypt, and deploys to GitHub Pages.
-
Set GitHub Pages source to Actions: Go to repo
Settings → Pages → Sourceand select GitHub Actions. -
Configure the encryption password (optional): Go to repo
Settings → Secrets and variables → Actions → New repository secret. Name:PAGE_PASSWORD, Value: your desired password. -
Verify deployment: Check the
Actionstab in the repo to see build/deploy status.
If PAGE_PASSWORD is not set, protected pages will be deployed without encryption.
# Install dependencies
bundle install
# Serve locally with live reload
bundle exec jekyll serve
# Site will be available at http://localhost:4000Apache License 2.0. Copyright (c) 2015-present Huxpro
Derived from Clean Blog Jekyll Theme (MIT License) by Blackrock Digital LLC.