Colophon
A short "how it's made" page for this site.
How this site is built
This website is currently built with 🎈 Eleventy (11ty) v3.1.2, a wonderful static site generator that prioritizes speed and simplicity. The domain brennan.day is registered on Porkbun and hosted on Netlify with automatic HTTPS via Let's Encrypt.
The CSS is custom-built with a Gruvbox-inspired colour scheme and no external frameworks, prioritizing performance and maintainability. The typefaces* used are Public Sans for body text, PT Serif for headings, and JetBrains Mono for code and metadata.
The site features the Tomatic cursor set by JefTriforce, available at RW-Designer. These cute, fat cursors are licensed under Creative Commons - Attribution + Noncommercial.
The site's 88x31 button was created using the Button Generator from Ritual.
Drafts are usually written first as Markdown files in 750 Words, a practice of mine since September 2011. Other times, I write in Bear for note-taking and idea capture.
Content is then transferred to the local git repository on GitLab, with changes saved using git. Development and formatting done in Sublime Text 4.
Tech stack for brennan.day:
- Static Site Generator: Eleventy (11ty) v3.1.2
- Template Engine: Nunjucks for layouts and partials
- Markdown: Content written in Markdown with YAML front matter
- Styling: Custom CSS (Gruvbox-inspired color scheme) with no framework dependencies
- Search: Pagefind for static, client-side search
- Syntax Highlighting: @11ty/eleventy-plugin-syntaxhighlight
- RSS/JSON Feeds: @11ty/eleventy-plugin-rss for RSS/Atom/JSON feeds
- Math Rendering: @vscode/markdown-it-katex for LaTeX equations
- Emoji Support: markdown-it-emoji for emoji shortcodes
- Footnotes: markdown-it-footnote for standard markdown footnotes
- Diagrams: Mermaid.js for flowcharts and diagrams
- Hosting: Netlify with continuous deployment
- Version Control: Git + GitLab
Enhanced Markdown Capabilities
The site supports extended markdown features for rich content creation:
- Mathematical expressions via KaTeX (inline
$and block$$delimiters) - Emoji shortcodes that automatically convert to emoji characters
- Standard markdown footnotes with proper styling and backlinks
- Mermaid diagrams for visual representations of processes and relationships
- Custom CSS classes for styled components (alerts, buttons, color utilities)
These features enable technical writing, academic content, and expressive formatting while maintaining the simplicity of plain text authoring. See the style guide for a complete demonstration of all markdown capabilities.
IndieWeb Features
This site follows IndieWeb principles:
- Microformats2: Proper h-card, h-entry, and h-feed markup for machine-readable content
- Webmentions: Configured with webmention.io for receiving interactions
- POSSE: Publish (Own Site, Syndicate Elsewhere) - canonical content lives here first
- IndieAuth: Currently, 14 rel-me verification links for identity across the web
- RSS/Atom/JSON Feeds: Multiple feed formats at
/feed.xmland/feed.json - Semantic HTML: Proper landmarks, ARIA labels, and accessibility features
Principles
- Plain text survives. Markdown + git keeps the work portable and future-proof.
- Performance matters. Shipping less is a form of respect. Target: 95+ Lighthouse scores.
- Accessibility is non-negotiable. Sites that work for people, not screens. WCAG 2.1 AA compliance.
- Progressive enhancement. Start with what works everywhere, enhance from there.
- Own your data. Canonical content on my domain, syndicated elsewhere as desired.
- Build in the open. Source code available on GitLab, documented for others to learn from.
Current Site Statistics
- Build time: ~5.8 seconds (including search indexing)
- Pages generated: 240 (239 HTML + JSON feed)
- Blog posts: 50+ and growing
- Static pages: 35+
- Tag pages: 70+ with h-feed markup
- Search index: 16,131 words across 236 pages
- rel-me links: 75 for IndieWeb verification
Performance Optimizations
The site has been optimized for faster builds and better development experience:
- Filter caching: Implemented caching for expensive operations (83% improvement on totalWords filter)
- Incremental builds: Only rebuilds changed files during development
See the performance documentation for detailed metrics and optimization strategies.
Operational Notes
These details are mostly for future-me (or anyone curious enough to poke at the source).
Local Development
Prerequisites:
- Node.js 18+ and npm
Commands:
npm install
npm start # Standard development server
npm run start:fast # Quieter development output
npm run start:clean # Start with clean cache
The dev server runs at http://localhost:8080 with incremental builds enabled.
To build the site:
npm run build # Production build
npm run build:clean # Clean build from scratch
npm run build:perf # Test build speed without writing files
For debugging and performance profiling:
npm run debug # Verbose Eleventy output
npm run debug:perf # Performance profiling with timing
Webmentions
Webmentions are fetched from webmention.io at build time. The build expects a token:
export WEBMENTION_IO_TOKEN=your_token_here
Deployment
Hosting is on Netlify with continuous deployment from GitLab.
Build settings:
- Build command:
npm run build - Publish directory:
_site