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 |
| 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 |
| 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.