HugoPress reference site

The HugoPress Magazine

We write so your content ships itself

Guides, case studies and field notes from running a headless CMS that generates a blazing-fast static site through plain Git commits.

We write so your content ships itself

Latest articles

Architecture, performance and editorial craft — we write about turning content into a fast, durable static site.

Architecture Hugo Headless

Building a headless CMS on Hugo

A classic monolithic CMS bundles authoring, storage and rendering into one running process. That is convenient — until you start caring about performance, security and scaling. The headless approach decouples those three responsibilities, and that decoupling is exactly what HugoPress is built on. Three layers, three responsibilities The editor — authors write in a block editor (Editor.js). The output is clean structured JSON, not WYSIWYG HTML soup. The domain layer — the CMS turns blocks into finished HTML via the BlockRenderingPipeline. The theme itself knows nothing about Editor.js. Delivery — the rendered content is written as content/<lang>/... and committed to Git. Hugo builds a static site from it. The theme does not know Editor.js. All renderers live on the CMS side, which keeps the template dumb, portable and easy to test.

Read more
Performance CDN Hugo

Why static sites win on the edge

When a user opens a dynamic page, the server typically reaches into a database, assembles HTML, and only then replies. On a static site that work is already done at build time — all that is left for the request is to ship a finished file. What you save The database round-trip — gone; the content is already in the HTML. Runtime time — no PHP/Node process on the critical path. Distance — the file sits in a CDN POP a few dozen kilometres from the reader. Measurable impact Metric Dynamic Static on CDN TTFB ~280 ms ~25 ms LCP (median) 2.4 s 0.9 s Cost per request non-trivial ~zero The fastest database query is the one that never has to run.

Read more
i18n Content Hugo

Multilingual the painless way

Multilingual support is a source of pain in most systems — duplicated templates, drifting translations, broken links between languages. Hugo handles it surprisingly elegantly, and HugoPress only smooths a few rough edges. One layout, two languages The section data lives in each page’s front matter; the layout is shared. The same layouts/blog/list.html template reads .Params.* and renders both the cs and en variant — no duplicated logic. Pairing via translationKey Give both versions the same translationKey:

Read more
Editorial Workflow Git

An editorial flow that ends in a commit

Great architecture is worthless if the editorial team hates working in it. That is why we built the HugoPress editorial flow around three simple states. Three states of an article Draft — the author writes in the editor, saves whenever, nothing is published. Preview — one click renders the content and deploys it to a preview site that is identical to production. Published — approved content is committed to the production repository and a build kicks off. Preview equals production Preview runs on the same template and the same pipeline as the live site. What you see in preview is what readers get — no deployment-day surprises.

Read more

Get every new post in your inbox

An occasional digest of new writing on headless publishing, Hugo and static delivery. No spam, unsubscribe in one click.

Get every new post in your inbox

We respect your inbox. Unsubscribe anytime.