This document describes the high-level architecture of the hwschuur.nl website.
┌─────────────────────────────────────────────────────────────┐
│ GitHub Pages │
│ (Hosting, CDN, SSL, Custom Domain) │
├─────────────────────────────────────────────────────────────┤
│ Jekyll 3.10 │
│ (Static Site Generator) │
├─────────────────────────────────────────────────────────────┤
│ Minimal Mistakes Theme 4.27.0 │
│ (Remote Theme via GitHub) │
├─────────────────────────────────────────────────────────────┤
│ SCSS Customizations │ Custom Layouts │ Content │
│ (_sass/) │ (_layouts/) │ (_posts/, _pages/)│
└─────────────────────────────────────────────────────────────┘
Jekyll transforms source files into a static HTML website:
Source Files Build Process Output
───────────── ───────────── ──────
_posts/*.md ──┐
_pages/*.md ──┤ _site/
_layouts/*.html ──┼────▶ Jekyll Build ────▶ ├── index.html
_includes/*.html ──┤ ├── work/
_sass/*.scss ──┤ ├── contact/
_config.yml ──┘ ├── 2025/...
└── assets/
_config.yml is parsed_site/This site uses Minimal Mistakes as a remote theme:
remote_theme: mmistakes/minimal-mistakes@4.27.0
This means:
When Jekyll looks for a file:
1. Local file (in this repository) ← Highest priority
2. Remote theme file
3. Jekyll default ← Lowest priority
Posts live in _posts/ with date-prefixed filenames:
_posts/
├── 2025-06-16-illusionofthinking.md
├── 2025-05-22-io.md
├── 2025-05-15-aconversationwithjonyive.md
└── ... (31 posts total)
Each post has:
Static pages live in _pages/:
_pages/
├── 404.md # Error page
├── category-archive.md
├── contact.md # Contact information
├── tag-archive.md
├── work.md # Publications and talks
└── year-archive.md
The site uses Jekyll’s default collections:
posts - Blog entries (built-in)pages - Static pages (included via config)Layouts inherit from each other:
default.html
│
├── home.html (extends single.html)
│ └── index.html uses this
│
├── single.html
│ └── All posts and pages use this
│
└── Other layouts (splash, posts, tags, etc.)
Content (post.md)
│
▼
┌──────────────────┐
│ single.html │ ← Adds article wrapper, meta, related posts
│ layout: default│
└────────┬─────────┘
│
▼
┌──────────────────┐
│ default.html │ ← Adds HTML shell, head, masthead, footer
│ layout: none │
└──────────────────┘
│
▼
Final HTML
_sass/
├── minimal-mistakes.scss # Main import file
└── minimal-mistakes/
├── _variables.scss # Customized variables
├── _base.scss # Base styles
├── _page.scss # Page layout
├── _archive.scss # Archive listings
├── _sidebar.scss # Sidebar styles
├── _navigation.scss # Navigation styles
├── skins/ # Color skins
│ └── _dirt.scss # Active skin
└── vendor/ # Third-party styles
The theme uses a skin system for color schemes:
# _config.yml
minimal_mistakes_skin: dirt
Available skins: air, aqua, contrast, dark, dirt, neon, mint, plum, sunrise
_config.yml
│
├── site.title ─────────▶ Henk van der Schuur
├── site.author ────────▶ Customer Director at Schuberg Philis. Software Production Enthusiast. Pragmatic Perfectionist.
└── site.defaults ──────▶ Default front matter
_data/navigation.yml
│
▼
masthead.html
│
▼
Rendered navigation menu
Plugins extend Jekyll’s functionality:
| Plugin | Purpose |
|---|---|
| jekyll-paginate | Splits posts across multiple pages |
| jekyll-sitemap | Generates sitemap.xml |
| jekyll-feed | Creates Atom feed |
| jekyll-gist | Embeds GitHub Gists |
| jemoji | GitHub-style emoji support |
| jekyll-include-cache | Caches include files |
| jekyll-redirect-from | URL redirects |
User Request
│
▼
GitHub Pages CDN
│
▼
hwschuur.nl (Custom Domain)
│
▼
Static HTML/CSS/JS
│
▼
User's Browser
comments: false - reduces complexitysearch: false - keeps site simple| See also: Directory Structure | Theme Integration |