DEV Community

Art
Art

Posted on

ForgeCMS: a CMS without a database, and our users decide what gets built next

Six months ago ForgeCMS was a weekend experiment: can a website run without WordPress, without a database and without a build step? Today it runs several real sites, and it covers most of what a small business, an association or a creator needs from a website.

This post gives an overview of what's there, how it works, and how you can tell us what should come next.

The idea in one paragraph

ForgeCMS is a single Go binary. Your content lives as Markdown and small SML files in a Git repo on Codeberg. The server fetches the files at request time, caches them, and renders HTML. There's no database, no admin backend to keep patched, and no build pipeline. You edit a file in Git, and a few minutes later the change is live.

What a page looks like

Pages are written in SML, a simple markup of nested blocks with properties:

Page {
    title: "My Bakery"

    Heading { level: "1" text: "Fresh bread, every morning" }
    Text { value: "Family-owned bakery in Wittenberg. Stone oven, no additives." }

    Cards {
        Card { title: "Sourdough" text: "Baked daily from a 12-year-old starter." }
        Card { title: "Opening hours" text: "Tue–Sat, 7:00–13:00" }
    }

    Link { href: "mailto:hallo@meinebaeckerei.de" text: "Get in touch" }
}
Enter fullscreen mode Exit fullscreen mode

Longer texts are plain Markdown. You can read SML in seconds, and it turns out an AI can write it just as easily. That was a deliberate choice: many of our sites are edited by describing the change to Claude Code on the server, and it gets SML right on the first try.

What's already in the box

The free core covers:

  • pages in SML and Markdown, menu, footer, themes
  • multiple languages: a de/, en/, es/ … subfolder per language, with fallback to the default
  • menu, footer and routes can live in the content repo too, so editing the site never requires touching the server
  • sliders, cards, tables, images, YouTube embeds, privacy-friendly analytics (Umami)
  • a content cache that keeps serving the last good copy if Git hosting is slow or down

On top of that there are modules, each built for a real site:

Module What it does
Blog Posts with photos, pages, Atom feed, drafts and scheduled posts, share buttons without third-party scripts, several languages
Events Dates and gigs with flyer thumbnails, an event page per date, past events, .ics calendar export
Contact form Text fields, checkboxes, radio buttons, selection lists; messages go by email and are not stored
Newsletter Double opt-in, mailings written in Markdown in a small admin page, one-click unsubscribe (RFC 8058)
Shop Physical and digital products, paid in June (Ğ1) or by euro bank transfer, no payment provider
Feature requests Visitors propose features and vote, one vote per person

Everything that needs to be stored, like orders or newsletter addresses, is stored as small SML files on the server. Still no database.

A few of these are running in public:

Login without passwords

The modules that need a login (feature voting, newsletter admin) use magic links. You enter your email address and get a link, and that's it. There are no passwords to leak and no accounts to manage. Login tokens live only in memory.

We use the email address for one more thing: it keeps feature voting fair. One address, one vote per request, and you can take your vote back any time. Nobody sees who voted for what.

You decide what we build next

This is the part I'm most happy with. On crowdware.info/forgecms/features anyone can propose a feature for ForgeCMS or vote for the ones they want. The requests with the most votes get built first.

It works. So far five features have been proposed:

  • Contact form — done
  • Event calendar — done
  • Blogging module — done (comments are not in yet)
  • Mailing list — done, as the newsletter module
  • Online course (lessons with videos and texts, saved progress) — open

That's four out of five done within a few days of being proposed. The online course is the next candidate, and if it matters to you, a vote helps.

The voting page itself is the feature-request module, so you're testing it while you use it.

Hosting: small and cheap

ForgeCMS needs very little. All our sites share one small VPS with a single forgecms process behind Caddy, which takes care of HTTPS. A €1/month VPS is enough for a small site. The README walks you through setting one up with Claude Code doing the work, even if you've never run a server.

License and pricing

  • The core is open source under GPLv3. For commercial use there's a commercial license.
  • Modules are a one-time license of €19 to €39, with no subscription. All six together cost €139.
  • If you'd rather not do it yourself, we build the site for you at €130/hour (or 130 Ğ1). Small sites are often done in an hour.

If we ever make a profit, it isn't paid out to individuals. It goes into UBUNTU land projects that take land out of speculation.

Try it, and tell us what's missing

I'd love to hear what you would need before you'd move a site off WordPress. The best place for that is the feature request page, because there it gets votes.

Top comments (0)