explaingit

plain-cms/plain

Analysis updated 2026-05-18

10JavaScriptAudience · developerSetup · easy

TLDR

A content management system where your website's content is Markdown and JSON files stored in a Git repository, built into a static site with a browser based admin editor.

Mindmap

mindmap
  root((plain CMS))
    What it does
      Repo is the database
      Static files are the API
      Browser based admin
    Tech stack
      JavaScript
      Node.js
      Git and GitHub Pages
    Use cases
      Blogs and documentation sites
      Non technical publishing
      Migrate from Jekyll or VuePress
    Audience
      Developers
      Technical site owners

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Run a blog or documentation site where content lives as Markdown files versioned in Git instead of a database.

USE CASE 2

Let non-technical writers publish content through a browser based admin editor with drafts and one-click history restore.

USE CASE 3

Migrate an existing Jekyll or VuePress blog into plain while preserving old URLs with automatic redirects.

USE CASE 4

Build a site using one of fifteen ready made themes for blogs, portfolios, restaurants, or nonprofits.

What is it built with?

JavaScriptNode.jsGitGitHub Pages

How does it compare?

plain-cms/plainagi-ruby/ai-gpt_image2-seedance_2.0-video-skillsarman-luthra/aftr
Stars101010
LanguageJavaScriptJavaScriptJavaScript
Setup difficultyeasyeasy
Complexity1/5
Audiencedevelopervibe codervibe coder

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Uses the GitHub template repo plus GitHub Pages, no server or database to run.

In plain English

plain is a content management system built around the idea that your website's content lives directly in a Git repository, instead of in a database. Content is stored as plain Markdown files for posts and pages and JSON files for settings. When you push a change, a build process turns those files into a fast static website, meaning a set of plain HTML and JSON files that any web host can serve without running a server. Setting it up starts by copying the project's template repository, turning on GitHub Pages for hosting, and editing a config file with your site's name and description. From then on, every change follows the same pattern: edit a file, commit it, and the live site updates automatically about 30 seconds later. Because everything is stored in Git, older versions of any page can always be restored. For people who do not want to work directly in files, the live site includes a built in admin screen at the address slash admin. It gives you a writing interface with draft and publish buttons, a live preview, image uploads, and the ability to restore earlier versions of a page with one click. Signing in uses a GitHub access token rather than a separate account system, and there is an optional AI assist feature where you can add your own Anthropic API key to get writing suggestions, though every suggestion has to be manually approved before it applies. The project ships with fifteen ready made design themes covering things like blogs, portfolios, restaurants, and documentation sites, plus a plugin system for adding features such as search or contact forms. It also includes tools to import an existing blog from platforms like Jekyll or VuePress, converting the old content and setting up redirects so existing links keep working. plain is aimed at developers or technical site owners who want a simple, database free way to manage a website's content using Git as the single source of truth.

Copy-paste prompts

Prompt 1
Set up a new plain CMS site from the template repository and configure site.config.json with my site's title and description.
Prompt 2
Show me how to write a new blog post in plain by creating a Markdown file under content/posts/.
Prompt 3
Help me write a plain plugin that adds estimated reading time to blog posts, using the CLAUDE.md hook docs.
Prompt 4
Walk me through migrating my existing Jekyll blog into plain using the tools/migrate/jekyll.js importer.
Prompt 5
Explain how plain's admin editor authenticates with GitHub and how the AI assist buttons work.

Frequently asked questions

What is plain?

A content management system where your website's content is Markdown and JSON files stored in a Git repository, built into a static site with a browser based admin editor.

What language is plain written in?

Mainly JavaScript. The stack also includes JavaScript, Node.js, Git.

How hard is plain to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is plain for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.