The admin is not the product theater
A lot of modern CMS admin UIs are mini-SaaS apps: client routers, toast empires, and a loading spinner between you and the sentence you’re trying to finish.
Forma assumes something ruder and more useful: you came here to change a page and leave.
Assumption 1 — The server still knows the truth
htmx is the interactivity layer, not a rewrite of the architecture. Lists refresh. Editors save. Partials swap. Logic stays on the server where agents, forms, and humans can all agree on one model.
If JavaScript fails, you still have HTML forms. Progressive enhancement isn’t nostalgia — it’s uptime.
Assumption 2 — Writing deserves less chrome
Longform is Markdown-first. Metadata (SEO, OG, robots, canonical) should collapse when you’re drafting and expand when you’re shipping. The toolbar exists to insert snippets, files, and pages quickly — including a fast “add new” modal — not to turn every paragraph into a block puzzle.
Block editors are fine until you’re actually writing. Then you want a text file with superpowers.
Assumption 3 — Settings should feel like a cockpit, not a scavenger hunt
Switches. Clear sections. Cards that fill the width. Server / .htaccess / environment where you expect them. SEO as a first-class pane — robots, sitemap, schema, verification — not a plugin maze.
If a control exists, it should be findable without a docs quest. If it doesn’t exist yet (app self-update, we’re looking at you), we won’t fake it with a trophy icon.
Assumption 4 — Media is part of editing, not a side quest
Featured images, favicons, OG art, podcast artwork — path fields without a picker are how admins get ugly. Upload-or-choose-from-uploads belongs next to every image request. Pretty previews in Uploads aren’t decoration; they’re how you trust what you’re about to publish.
Assumption 5 — Humans and agents share one door
The admin is for you. The Agent API is for Cursor. Same content model, same SEO fields, same packages. We don’t build a second “headless-only” CMS and then apologize for the GUI.
That means:
- No scraping admin HTML when
/api/v1/helpexists - Tokens scoped on purpose
- Audit-friendly mutations
Assumption 6 — Dark, dense, and done
The shell is dark because you’re staring at it under a deadline, not presenting it to a VC. Density beats whitespace theater. One job per screen region. Confirm destructive actions. Never make “Save” a treasure hunt.
What we refuse
- A full SPA admin “because modern”
- Plugin supermarket UX
- Hiding SEO behind upsells
- Treating podcast RSS as an afterthought (when licensed, enclosures are real)
Forma’s admin isn’t trying to win a Dribbble shot. It’s trying to disappear the moment the site is right.