01 Module · Why Jekyll

The website that has
nothing to go wrong.

Jekyll takes Markdown and templates and produces a directory of HTML. That is the whole product. Everything good about it follows from that one decision — and so does every honest limitation.

First released
2008
Written in
Ruby
Runtime in production
None
Licence
MIT

Almost every website disaster we have been called in to clean up had the same shape: something was running that did not need to be.

A content management system is a program that sits on a public IP address, talks to a database, executes plugin code written by strangers, and regenerates the same page for every visitor. It has an administrative login. It has a version number that needs to keep moving. It has a dependency tree nobody has read.

For a documentation portal or a marketing site — content that changes a few times a week and looks identical to every visitor — all of that machinery is pure liability. It buys you nothing and it can fail in several hundred ways.

Jekyll deletes the machinery. You write Markdown, it produces HTML, and a web server sends the HTML. There is no process to compromise, no query to slow down, no plugin to patch on a Sunday evening.

Argumenten · The case

Eight reasons,
in order of how often they matter.

Ranked by what actually comes up in the second year of owning a site, rather than what sounds best in the first week.

01 The attack surface is a file server

No database, no interpreter, no admin login, no plugin marketplace. The well-worn categories of website compromise — SQL injection, plugin RCE, credential stuffing on /wp-admin — have nowhere to land. Your security posture becomes "keep nginx patched".

02 Every edit is a reviewable commit

Content lives in Git next to the code. Who changed the pricing page, when, and why is a git log away. Reverting a bad Friday deploy is one command, and legal can be given a signed history of a public claim.

03 It is genuinely fast

Static HTML from a European server or CDN edge answers in tens of milliseconds rather than hundreds. There is no cold start, no query plan and no cache to warm — which is why the performance stays fast eighteen months later.

04 Traffic spikes are boring

A front-page link on a Tuesday is a bandwidth question, not an architecture question. The same €4 machine that serves forty visitors serves forty thousand, and the invoice looks the same at the end of the month.

05 The repository is the backup

There is no database to dump, no uploads directory to sync, no restore procedure to rehearse. Any developer with a clone can rebuild the entire site on a laptop, offline, in under a second.

06 Non-developers can still edit it

This is the objection we hear most, and it has been solved for a decade. We wire a Git-backed editing interface with normal write-and-preview behaviour: marketing never opens a terminal, engineering never loses version control.

07 No lock-in worth the name

Your content is Markdown. Your templates are HTML with Liquid tags. If Jekyll vanished tomorrow, the output directory would keep serving indefinitely and a port to another generator would be a week, not a rebuild.

08 It has already outlived its replacements

Jekyll shipped in 2008 and still builds the same way. Several generations of static generators have been announced, adopted and abandoned in that window. Boring longevity is the feature you appreciate in year four.

Jämförelse · Side by side

Against a typical CMS

Figures from sites we operate, measured from Frankfurt. Your numbers will differ; the shape of the difference will not.

ConcernTypical CMSJekyll, as we build it
Runtime on the public internetPHP or Node, plus a databasenginx serving files
Time to first byte200–900 msUnder 40 ms
Monthly hosting€25–€200€4, or free from a CDN
Security patching cadenceCore, themes and every pluginThe web server, and Ruby at build time
Version historyA revisions table, if enabledComplete Git history with authorship
Staging environmentA second installation to keep in syncA branch and a preview build
BackupsDatabase dumps plus an uploads directoryThe repository, cloned everywhere
LocalisationA plugin, usually paidDirectories and front matter
Editing for non-developersBuilt inGit-backed editor, wired by us
Dynamic user accounts, checkout, search-as-you-typeBuilt inWrong tool — we quote Rails instead

Hur vi bygger · Our build

What a Chenborg Jekyll site actually contains.

We do not buy themes and we do not ship a default install. Every site is a design system authored from scratch, with the performance budget and the accessibility rules enforced in CI so that they survive contact with the second year.

  • A bespoke theme — typography, grid, colour tokens, dark mode, print styles
  • Content modelled in collections and data files, not copy-pasted between pages
  • Git-backed editing for colleagues who do not use a terminal
  • Multilingual routing, structured data, sitemap, Atom feed, clean canonical URLs
  • CI on Forgejo or GitLab that builds, checks links and refuses a bloated page
  • Deployment by rsync to nginx on NixOS, in Stockholm or Falkenstein
  • No third-party scripts, no cookie banner, no tracker to disclose
The Jekyll engagement in detail
tree -L 2
chenborg.com/
├── _config.yml        # one file, no admin panel
├── _data/             # stack.yml, faq.yml, people.yml
├── _includes/         # head, header, footer, tiles
├── _layouts/          # default, page, post, service
├── _posts/            # the journal, in Markdown
├── _sass/             # tokens, base, components
├── _services/         # a collection, not nine pages
├── assets/
│   ├── css/main.scss
│   ├── js/main.js     # 1.6 kB, no dependencies
│   └── img/logos/
└── index.html

# build output
$ du -sh _site
412K  _site   # the entire website

I gott sällskap · In good company

Jekyll is not a niche choice.

A partial reading of the official Jekyll showcase. Governments, standards bodies and framework maintainers reached the same conclusion we did.

Ruby on Rails

rubyonrails.org — the framework's own site.

U.S. Web Design System

The design standard for American federal government sites.

plainlanguage.gov

Alongside login.gov, foia.gov and 18F.

Spotify for Developers

With Netflix Devices, Twitch developer docs and Sketch.

Isomer, Singapore

A whole-of-government publishing platform, built on Jekyll.

UN World Statistics

With the French government's digital services.

The Markdown Guide

With CSS Reference and HTML Reference.

Development Seed

And COLLINS — studios who could have used anything.

The full Jekyll showcase

Ärligt talat · Honestly

When Jekyll is the wrong answer.

A tool this sharp has a clear edge, and pretending otherwise would cost you more than it costs us. We will steer you elsewhere when you need:

  • Per-user state — accounts, dashboards, permissions, anything where two visitors must see different pages. That is a Rails application.
  • Transactions — checkout, booking, payment. Static generation has no place to put the money.
  • Content that changes by the minute — live inventory, ticketing, a newsroom filing every ten minutes. A rebuild per change stops being funny somewhere past a thousand pages an hour.
  • Very large corpora — tens of thousands of pages will build, but the build stops being pleasant. There are incremental generators, and we will name one.
  • An editorial team that will not adopt any workflow — the Git-backed editor solves most of this, but not a team that has decided in advance to be unhappy.

Roughly a third of the time, the answer to "should this be Jekyll?" is no. We would rather say that in the first meeting than in the fourth month.

Nästa steg

Tell us what you are running.
We will tell you what it should be.

A first conversation costs nothing and takes forty minutes. You will leave it with an honest opinion about your stack — including, occasionally, that you should change nothing at all.