Show HN: Plain – a Git-native CMS in vanilla JavaScript, no database Plain, a Git-native CMS built with vanilla JavaScript and no database, launched on Hacker News. The system stores content as plain files in a Git repository, uses static site generation for deployment, and includes an optional AI assistant for content editing. It aims to simplify web publishing by eliminating servers and databases while leveraging Git for version control and collaboration. A Git-native CMS for the AI age. The repository is the database, static files are the API, and AI is the admin. Your whole website is a folder of plain files: Markdown for content, JSON for settings. Git gives you versioning, collaboration, and hosting hooks for free. The build turns it into a fast static site — HTML pages plus a read-only JSON API — that deploys anywhere for $0/month. No database, no server, nothing to patch. All state lives in this repo. Vanilla by design. No frameworks, no bundlers. One dependency:. The entire engine is a few small, readable files. marked Works without JavaScript. JS is progressive enhancement only. AI-operable. Deterministic layout, machine-readable content model, and aso agents or Claude Code can edit content, add collections, and write plugins safely. CLAUDE.md Get a copy: click Use this template or fork to create your own repo. Enable hosting: in your repo, go to Settings → Pages and set Source to GitHub Actions . Make it yours: edit site.config.json — set your title , description , and url — and commit.- Push or edit on github.com and commit . About 30 seconds later, your site is live. Every later change is the same loop: edit → commit → live in ~30s. Nothing is ever lost; any version of any page can be restored from Git history. Your live site includes an editor at /admin/ — a clean writing screen with Save draft / Publish buttons, live preview, image uploads, and per-page History with one-click restore. No Git knowledge needed. Sign in once with a GitHub access token it stays on that device : - On GitHub: Settings → Developer settings → Fine-grained tokens → Generate new token . - Repository access: Only select repositories → pick your site's repo. - Permissions → Repository permissions: Contents: Read and write , Actions: Read-only . - Generate, copy, and paste it into the admin's sign-in screen. The token never leaves the browser except to api.github.com. Editors who prefer files can keep editing files — the admin and direct edits coexist happily. Prefer a button to a paste? Deploy the optional ~60-line OAuth Worker /plain-cms/plain/blob/main/workers/oauth/README.md free on Cloudflare, backed by a free GitHub App and the sign-in screen gains "Sign in with GitHub" — one click, and each writer gets a token scoped to just that repo's contents. AI assist optional, BYOK : paste an Anthropic API key in Settings and the editor grows ✨ buttons — improve writing, suggest titles, generate the meta description, write image alt text, translate a page into a new draft. Every suggestion shows a before/after and asks before applying. The key stays in your browser and is sent only to Anthropic. Every build also publishes a read-only JSON API: /api/site.json , /api/posts/index.json , /api/posts/