Skip to content

Content · App Starter

CMS Template

A public site and an editorial admin over one content schema — generated into a codebase with no plugin stack to babysit.

Describe what you publish, and Dual7 generates this CMS around it: seven content entities, a fast public site, and an admin your editors will actually use — as one full-stack app in your repository. New content type? That's a schema change you own, not a plugin you audit.

  • 7 content entities
  • Draft → publish workflow
  • Code you own
  • Vibe + Governed modes

01 · Data model

What's inside: the data model

A CMS is a schema with opinions, and most inherited ones have twenty years of other people's. This starter generates seven entities that model publishing cleanly — and since they're tables in your codebase, the day your content stops fitting them is the day you change them.

tablewhat it holds
postsDated, authored content — articles, updates, releases — with status, body blocks, and SEO metadata.
pagesStanding site pages like about and contact, structured hierarchically and free of the dated-feed treadmill.
categoriesThe site's primary sections — one home per post, driving navigation and archive pages.
tagsCross-cutting labels for discovery and related-content queries, orthogonal to the section tree.
mediaImages, files, and video with alt text, focal points, and renditions, deduplicated in one library.
authorsBylines with bios, avatars, and archives — mapped to real users but decoupled from login accounts.
commentsReader responses with threading, moderation states, and spam flags — enabled per post, not site-wide.

02 · Screens

Signature modules

Public site and editorial admin

01

Readers get a fast, server-rendered site; editors get an admin organized around getting things published. Both are views over the same tables in one deployable app — no headless gymnastics, no separate frontend project to keep in sync.

Draft and publish workflow

02

Content moves from draft to review to published to archived, with scheduled publishing built in. Who can move what is a permissions rule in your code, so 'the intern published to the homepage' is a class of incident you retire on day one.

Rich text editing

03

A block-based editor with embeds, pull quotes, galleries, and code blocks, storing structured content rather than an HTML soup. Structure is what keeps a redesign from becoming a re-keying project three years from now.

SEO fields

04

Titles, meta descriptions, canonical URLs, open-graph images, and structured data are first-class fields with sensible fallbacks — rendered by your templates, not injected by a plugin that fights two other plugins for the head tag.

03 · Process

How it works

  1. 1You

    Describe what you publish

    Articles and authors, docs and versions, episodes and show notes — tell Dual7 your content's real shape. The starter builds the schema and both faces of the site around it.

  2. 2Vibe mode

    Tune it in Vibe mode

    Iterate conversationally: add a content type, restructure the section tree, change how bylines display. Each request becomes a reviewable change to schema, admin, and templates together.

  3. 3Governed mode

    Publish through the governed pipeline

    Deploy through approval gates to infrastructure you control, with an audit trail. Your archive lives in your database — portable, queryable, and never held by a platform.

04 · Fit

Who the CMS starter is for

Teams whose page builder became the bottleneck

Site builders are fast until the design system, the plugin stack, and the SEO tooling start negotiating with each other. A generated CMS collapses that stack into one codebase where the answer to 'can we change this?' is yes, followed by a commit.

Content teams with a type that doesn't exist

Recipes with structured ingredients, changelogs tied to versions, listings with hours and maps — content that isn't a blog post gets crammed into one on most platforms. Here a custom type is a first-class entity with its own fields, admin forms, and templates.

Developers done patching inherited platforms

If your week includes plugin security releases and a staging site that drifts from production, the appeal is simple: a CMS that is an ordinary app in your stack, with your test suite, your CI, and no ecosystem of third-party code running next to your content.

Editors who need the admin to match the workflow

Editorial process is real process — review gates, scheduled embargoes, a homepage that's curated rather than chronological. When the admin is generated code, the workflow in the tool can be the workflow on the whiteboard, not an approximation of it.

05 · Yours

Customize it, own it

Make it yours

Shape the schema to the publication first: rename posts to briefings or recipes, add the structured fields your content actually carries — prep time, affected versions, venue address — and the admin forms and public templates update with the schema. Vibe mode makes each of those a conversation, not a migration project.

From there, extend in any direction the site grows: a newsletter signup wired to your list, a paywall rule on premium categories, a search index, a related-content model. It's a standard codebase with no runtime dependency on Dual7 — your developers extend it like any app they already maintain.

Why a starter, not a subscription

Hosted CMS platforms hold your archive hostage politely: export in their format, templates in their language, features on their roadmap. This starter generates the schema, the admin, and the public site as source code in your repository — ten years of content stays in a database you can query, back up, and take anywhere.

The honest cost is that you run it, and the governed pipeline is what makes running it boring in the good way: staged deploys, approvals on changes, an audit trail, and regeneration when the site needs structural evolution instead of another late-night hotfix.

06 · Industries

Industry versions

CMS template — frequently asked questions

What's included when I start from this CMS template?

A complete publishing system in a codebase you own: posts, pages, categories, tags, media, authors, and comments, with a public site, an editorial admin, draft-to-publish workflow, a block editor, and SEO fields. One app, deployed on your infrastructure.

Can I define custom content types?

Yes — that's the core advantage of a generated CMS. Describe the type and its fields in Vibe mode, and the entity, admin forms, and public templates are generated together as code you can review. No custom-fields plugin, no schema bolted on in the database's shadow.

Is the public site fast enough for SEO?

The site is server-rendered on a modern stack with clean markup, real meta fields, and structured data — the fundamentals search engines reward, without a caching-plugin arms race. And because templates are yours, anything an audit flags is directly fixable.

How do editors work in it — do they need to touch code?

Never. Editors live in the admin: writing in the block editor, managing media, moving content through review, scheduling publication. Code is where developers change the system, not where editors publish to it.

Can I migrate an existing blog or site into it?

Yes — posts, pages, media, authors, and comments map onto plain relational tables, and most platforms export cleanly enough to script the import. Redirects from old URLs are routing rules in your app, so the archive keeps its search equity.

How does this compare to going headless?

Headless splits your site into a rented content API and a frontend you maintain against it. This starter generates both halves as one codebase — structured content and the site that renders it — so you get the modeling discipline of headless without the subscription or the seam.

Related

Vinoth Kumar R, Full-Stack Software Engineer at Dual7
Published by Vinoth Kumar R, Full-Stack Software Engineer

Dual7 App Starters

Build your CMS on your terms

A public site and an editorial admin over one content schema — generated into a codebase with no plugin stack to babysit. Describe your version to start — the output is a project you own.