Source for my personal site: a Jekyll blog using the Centrarium
theme, deployed to GitHub Pages
via GitHub Actions, with content editable through Decap
CMS at /admin.
- Jekyll — static site generator
- Centrarium — the theme (
_layouts,_includes,_sass), vendored in directly rather than as a gem — seeTHIRD_PARTY_LICENSES.mdfor attribution. Built on Bourbon/Neat/Bitters for styling,jekyll-archivesfor category/tag pages,jekyll-paginate-v2for the homepage, andjekyll-sitemap. - GitHub Pages — hosting, deployed by the workflow in
.github/workflows/deploy.ymlon every push tomaster - Decap CMS — a browser-based editor for posts and pages at
/admin, authenticated against GitHub via a small OAuth relay — seecms-oauth-worker/README.mdfor how that's wired up
Posts take a categories (single value: cycling, travel, tech, or
business) and optional tags/cover image — see any file in _posts/
for the shape. Standalone pages (about.md, posts.md) show up in the
nav automatically when they have main_nav: true in their front matter.
bundle install
bundle exec jekyll serve --watchThen visit localhost:4000.
To use the CMS at /admin locally, also run Decap's local proxy server
in a second terminal (needs Node.js installed):
npx decap-serverWith both running, /admin on localhost talks to that proxy instead of
GitHub — no OAuth login needed, and edits are written straight to your
working copy on disk so you can see them picked up by jekyll serve
and commit them yourself. This only works on localhost; the deployed
site always uses the GitHub OAuth flow (see cms-oauth-worker/README.md).
Pushing to master triggers .github/workflows/deploy.yml, which builds
the site with Jekyll and publishes it via GitHub Pages. No manual build
step is required.
Visit /admin on the live site and log in with a GitHub account that has
write access to this repo. Posts live in _posts/; about.md and
posts.md are edited individually as top-level files.