jtakeit
Try for free

Static CMS for client sites

A static CMS for client sites, where every save is a commit

jtakeit is a git-based static CMS for client sites: the owner edits by tapping the text on the page, the words are JSON in your repository, every save is a commit, and the site stays static output.

zsh — client-site
$ git pull
$ git log --oneline -3 -- jtk/content/
b3dc408 save: client-site at rev 14
5e0a9c1 save: client-site at rev 13
a41f7d2 save: client-site at rev 12
$ git show --stat --format= HEAD
 jtk/content/index.json | 2 +-
The owner’s save in the panel, as it lands in your repository: a commit.

01/ what it is

What is a static CMS?

A static CMS edits the content of a site that is built into plain HTML ahead of time, instead of being assembled from a database on every visit. Visitors load files; the CMS is how the words in those files change.

For a client site that is two jobs at once. The owner has to be able to change their own text without calling you, and the result has to stay the fast static site you built — no PHP, no database and no plugins on the site itself.

On jtakeit the site is a static project — Astro by default, or any other static generator — in a git repository you keep. The owner’s words are JSON documents in that repository, the owner edits them by tapping the text on the page, and every save is a commit.

02/ git or api

Git-based CMS or API-based headless CMS?

An API-based headless CMS keeps content in its own database and serves it over an API — a good fit when one content team publishes to a website, an app and more. A git-based CMS keeps content as files next to the code. A client site has one owner and one site, which is why jtakeit is git-based.

Two kinds of CMS, described in general terms, and jtakeit. Individual products differ — check the one you are considering.
API-based headless CMSMost git-based CMSsjtakeit
Published contentIn the CMS’s database, fetched over its APIMarkdown or JSON files in the repositoryJSON in the repository you keep
A saveA record updateA commitA commit; drafts stay in the platform’s database
Where the editor worksA separate admin appUsually a separate admin formOn the page itself, by tapping its text
What the editor can changeWhatever the content model allowsWhatever the CMS’s configuration exposesOnly the fields the catalogue declares; no add-page or add-block button
Forms, bookings, hostingOutside the CMS, added separatelyOutside the CMS, added separatelyRun by the platform, with billing, backups and the domain
The site as it was in MarchDepends on the CMS’s historyOne command in gitOne command in git

03/ beyond editing

What a static site CMS needs for client sites

A CMS answers one question: how does the owner change the words? A client site asks three more — what happens when a visitor writes in, when they want to book, and when the client wants to leave.

  • Edits that can’t break the design

    The owner fills only what the catalogue declares. Structure is a commit, made by you or your agent.

  • Enquiry forms

    Forms are protected against spam, and enquiries arrive in Telegram, email or the admin inbox.

  • Paid bookings

    The bookings module sends paid bookings straight to the business’s own Stripe.

  • Data they can take

    Enquiries and bookings export as CSV and JSON. Export never needs a live subscription, and nothing is deleted when one lapses.

  • A preview before payment

    The client signs off on the real site, on a preview, before they pay.

  • SEO that stays switched on

    A build with noindex, a robots.txt that blocks crawlers, an empty sitemap or a canonical on another host is refused.

04/ written by your agent

A static site generator CMS your AI agent writes

Astro is the default scaffold and any static generator works; either way, every part of the CMS is a file in the same repository: the pages, the declaration of what the owner may edit, and the content documents. Your agent — Claude Code, for example, through jtakeit’s MCP server — writes all three, builds the site and hands you a preview.

  • Declare. A field you declare is a field the owner can edit; everything else is design.
  • Check. The catalogue check refuses a field that is declared but not rendered, or rendered but not declared.
  • Review. You read the agent’s work as a diff, like any other code.

How editing is declared in the Astro CMS →
The flow with Claude Code, step by step →

jtk/content/index.json
{
  "path": "/",
  "seo": { "title": "…", "description": "…" },
  "blocks": [
    { "type": "hero", "v": 1,
      "title": "Fresh bread from six",
      "lead": "Order by noon, collect tomorrow." },
    { "type": "questions", "v": 1,
      "items": [ … ] }
  ]
}
One page’s words: a JSON document in the repository.

05/ choosing

Choosing the best git-based CMS for client sites

There are many good git-based CMSs, and the right one depends on who edits. If your editors write long articles and are happy in an admin form, or you want to host and run the CMS yourself, a general-purpose git-based CMS may serve you better.

jtakeit is narrower on purpose. It is for developers whose AI agent writes client sites, and whose clients should be able to change their own words — and nothing else — without a call to you. It also runs what a client site needs around the CMS: forms, bookings, billing, backups, hosting and the domain.

Moving a client off a database-driven site? Read about jtakeit as a WordPress alternative for developers. To see how the owner’s fields are declared in code, read the Astro CMS for client sites.

06/ questions

Static CMS questions

What is a static CMS?
A static CMS edits the content of a site that is built into plain HTML ahead of time, rather than assembled from a database on every visit. On jtakeit the content is JSON in the site’s git repository, the owner edits it on the page itself, and every save is a commit to that repository.
Is jtakeit a git-based headless CMS?
It is git-based, but it is built for one client site rather than for serving content to many channels. The content lives as JSON files next to the code, and the owner edits it on the page itself instead of in a separate admin.
Which static site generator does it use?
Astro by default: jtakeit’s scaffold sets up an Astro project with the catalogue check, forms and specimens built in, and builds it in under a minute. Any other static generator works the same way — Next.js as a static export, Nuxt, SvelteKit, Eleventy or Vite — laid out to the same contract, in about 90 seconds a build. Either way every page is prerendered to HTML at build — React, Vue or Svelte components included — and there are no plugins, no PHP and no database on the site.
Can the client break the design?
No. The owner can fill only the fields the catalogue declares, and there is no add-page or add-block button. Changing the structure is a commit, made by you or your AI agent.
What happens to the content if the client leaves?
The site is a git repository you keep, with the content in it. Handover is one link, and the client’s enquiries and bookings export as CSV and JSON. Export never needs a live subscription, and nothing is deleted when one lapses.

07/ try it free

Try it on a real client site

Sign up in the panel and build your first client site. Building and previewing cost nothing — you pay a wholesale price only when a site goes live.

Try for freeadmin.jtakeit.com

  • Free until a site goes live
  • Then a wholesale price per live site, from €5 a month
  • The code stays in your git repository