Colophon
A short "how it's made" page for this site.
How this site is built
This website is currently built with 🎈 Eleventy (11ty) v2.0.1, 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 color scheme and no external frameworks, prioritizing performance and maintainability. The fonts used are Public Sans for body text, PT Serif for headings, and JetBrains Mono for code and metadata.
Drafts are usually written first as Markdown files in 750 Words, a practice of mine since September 17, 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 Windsurf.
Tech stack for brennan.day:
- Static Site Generator: Eleventy (11ty) v2.0.1
- 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: ~0.90 seconds
- Pages generated: 48 (47 HTML + JSON feed)
- Blog posts: 3
- Static pages: 29
- Tag pages: 7 with h-feed markup
- Search index: 4,098 words across 45 pages
- rel-me links: 14 for IndieWeb verification
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
The dev server runs at http://localhost:8080.
To build the site:
npm run build
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