This repository backs the website pppw.github.io.
It is a Jekyll-powered personal site with a custom design system, long-form writing support, configurable build-time themes, Mermaid diagrams, syntax-highlighted code blocks, and a simple content workflow for posts and images.
- Jekyll + GitHub Pages static site workflow
- Build-time configurable themes
zentheme for calm, editorial long-form readingstarcrafttheme for a dark tactical sci-fi interface- Mermaid diagram support in Markdown code fences
- Rouge syntax highlighting for fenced code blocks
- Markdown-based posts and pages
- Static asset support for post images
Theme selection is controlled in _config.yml.
Current supported themes:
zenstarcraft
The current default is:
theme_name: zenIf the configured theme is invalid, the site falls back to zen.
Build the site:
bundle exec jekyll buildRun a local development server:
bundle exec jekyll serveAfter starting the server, Jekyll will print the local URL, typically:
http://127.0.0.1:4000/
Create a Markdown file in _posts/ using Jekyll’s standard filename format:
_posts/YYYY-MM-DD-your-post-title.md
Example:
_posts/2026-03-10-my-new-post.md
Use front matter at the top of the file:
---
layout: post
title: "My New Post"
subtitle: "Optional subtitle"
date: 2026-03-10
categories: [notes]
tags: [example]
excerpt: "Short summary for previews."
author: "PPPW"
---Then write the article body in Markdown below it.
Post images should be stored under assets/images/posts/ so Jekyll publishes them as static files.
Recommended structure:
assets/images/posts/YYYY-MM-DD/image-name.png
Example:
assets/images/posts/2026-03-10/cover.png
Reference the image from your Markdown like this:
This is important:
- Markdown preview in an editor may resolve relative file paths
- Jekyll pages need a published site path
- Using
{{ ... | relative_url }}keeps the URL correct in the built site
Use fenced Mermaid blocks inside Markdown:
```mermaid
flowchart LR
A[Start] --> B[Finish]
```The site loads Mermaid in the browser and renders these blocks automatically.
Fenced code blocks are highlighted with Rouge.
Example:
```go
func main() {
fmt.Println("hello")
}
```Theme files live in:
assets/css/themes/
To add a new theme:
- Copy an existing theme file such as
zen.css - Rename it, for example
nebula.css - Add the new theme name to the supported-theme check in _layouts/default.html
- Set
theme_name: nebulain _config.yml - Rebuild the site
_config.yml
_layouts/
_includes/
_posts/
assets/css/themes/
assets/images/posts/
assets/js/
This repo is intended to back pppw.github.io. Once changes are committed and pushed, GitHub Pages can build and publish the site, depending on your Pages configuration.