Skip to content

Overview

What this site is

douglasebhoman.com is the professional web presence and freelance practice of Douglas Ebhoman, a documentation systems specialist based in Prague. Pages are written in HTML, CSS and vanilla JavaScript, and built into a static site by Eleventy. There is no front-end framework and no CMS. A GitHub Actions workflow builds the site and deploys the output to GitHub Pages.

Project details

Property Value
GitHub repo https://github.com/Douglasebhoman/douglasebhoman.github.io
Live site https://douglasebhoman.com
Tech stack HTML, CSS, vanilla JavaScript, Nunjucks templates
Build tool Eleventy 3.1.6, on Node 22
Build output _site/ (generated, not committed)
Deployment A push to main runs the Build and Deploy to GitHub Pages workflow

Site structure

URL Page Purpose
/ Homepage Hero, health check widget, selected work, writing samples, documentation audit service, recommendation, contact, newsletter
/work/ Work Full grid of documentation portfolio pieces, plus a generated "Latest writing" strip
/services/ Services Documentation Audit service: pricing, deliverables, FAQ
/audit/ Audit Standalone audit booking page
/blog/ Blog index Systems Over Sentences series: featured post, series navigation, article grid, newsletter. Generated from the posts collection
/blog/posts/<slug>/ Blog post One page per post, generated from the post file and the shared post layout
/sitemap.xml Sitemap Generated by sitemap.njk
/404.html 404 Custom error page with navigation back to the homepage

Individual posts are not listed here, because the list would go out of date with every publication. The blog index is the current list.

What is generated and what is written by hand

Surface Source
Blog post pages Generated: front matter and body in blog/posts/<slug>/index.html, wrapped by _includes/layouts/post.html
Blog index: featured post, series navigation, article grid Generated from the posts collection
Work page "Latest writing" strip Generated from the three newest posts
Previous and next links on each post Generated from each post's part number
Blog post entries in the sitemap Generated from the posts collection
Homepage, services, audit, the work page portfolio grid Written by hand
Non-post entries in the sitemap Written by hand in sitemap.njk
Footer on top-level pages Written by hand in each page

Dependencies

Build

Property Value
Generator @11ty/eleventy 3.1.6, the only npm dependency
Runtime Node 22
Configuration eleventy.config.js

Fonts

Property Value
Provider Google Fonts
Families Fraunces, DM Sans, DM Mono
Loading method CDN link in <head> on every page

Newsletter

Property Value
Provider MailerLite
Account ID 2241731
Form ID 8iCjwu
Placement Homepage contact section, blog index, all blog post pages

Comments

Property Value
Provider Giscus
Backend GitHub Discussions on douglasebhoman.github.io
Repo ID R_kgDORhvuTg
Category ID DIC_kwDORhvuTs4C53Ys
Mapping pathname: each post gets its own discussion thread
Placement All blog post pages

Booking

Property Value
Provider Calendly
Link https://calendly.com/douglas-douglasebhoman/30min
Placement Navigation and booking buttons on the homepage, work, services, audit and blog index pages, the embed on the audit page, and every blog post through the shared layout

Documentation health check widget

Property Value
Type Rule-based scoring engine
Questions Six
Dimensions scored Accuracy, ownership, findability
Output Score percentage, category label, three dimension health bars, per-answer findings, weakest dimension summary
States Three: questions, results, reset. Reset clears all answers and returns to question one
Placement Homepage

Deployment

Every push to main runs the Build and Deploy to GitHub Pages workflow. It installs dependencies, builds the site with Eleventy, and publishes the _site output to GitHub Pages. Changes are usually live within a few minutes. See Deployment for verification, troubleshooting and rollback.

Property Value
Custom domain douglasebhoman.com
DNS Cloudflare, DNS-only mode, proxy disabled
HTTPS Issued automatically by GitHub via Let's Encrypt

Cloudflare proxy must remain disabled. Enabling it breaks GitHub's certificate issuance.