Personal blog of Bingchen Gong — published at www.wenri.me.
Built with Jekyll on a customized fork of the So Simple theme, and deployed to GitHub Pages. Longer-form writing lives at s2.hk.
Requires Ruby + Bundler (and Node for the CSS-purge step).
bundle install
bundle exec jekyll serve # serves at http://localhost:4000Pushing to main triggers .github/workflows/jekyll.yml, which:
- builds with
JEKYLL_ENV=production bundle exec jekyll build, - strips unused CSS via PurgeCSS (
purgecss.config.js), and - publishes
_site/to GitHub Pages (custom domain set byCNAME).
To reproduce the production build locally:
JEKYLL_ENV=production bundle exec jekyll build
purgecss -c purgecss.config.jsPosts live in _posts/ as YYYY-MM-DD-title.md. Defaults (layout: post, social sharing) come from _config.yml, so front matter stays minimal:
---
title: "Post title"
excerpt: "One-line summary used in listings and search."
date: 2024-12-02
---Markdown is kramdown (GitHub-flavored) with Rouge highlighting, auto heading IDs, and an optional table of contents ({% include toc %}). MathJax is enabled site-wide. Top-nav links are in _data/navigation.yml.
- No JS bundler. Scripts load as native ES modules through an import map in
_includes/scripts.html;assets/js/main.jsimports jQuery, Lity, and smooth-scroll by bare specifier. - No vendored dependencies. Libraries and fonts come from privacy-friendly CDNs (esm.sh, fonts.bunny.net, cdnjs, unpkg) rather than local files or Google Fonts.
- Search is Lunr over a build-time index (
assets/js/search-data.js), loaded only on the/search/page. - Styles are SCSS (
assets/css/main.scss+_sass/), compiled by Jekyll and pruned by PurgeCSS in CI.
See CLAUDE.md for a fuller architecture tour and gotchas.
Theme: So Simple by Michael Rose, used under the MIT license — see LICENSE. The theme's own documentation is upstream; a copy of its v2 docs remains in README-OLD.md, and the docs/ and example/ folders hold the theme's demo content (excluded from the build).