Why We Built a Headless CMS for Bagels
The modern web needs a content layer as flexible as it is delicious. Here is why we ditched the monolith.
A lightweight CMS that runs entirely locally. Define custom post types, write content offline, and generate clean HTML files to push to GitHub Pages.
Powers static sites hosted on
bagelCMS cuts out the database and backend. It's a local tool that turns your content into static files instantly.
Don't be restricted by 'Posts' and 'Pages'. Create Docs, Portfolio Items, Recipes, or any custom structure you need with JSON schemas.
Authenticate via OAuth, commit your generated HTML directly to a repository, and trigger deployments automatically.
No internet required to write. Your data is saved locally in your browser's IndexedDB. Work from a train, a cabin, or a plane.
Outputs vanilla, semantic HTML files. No bloated JavaScript frameworks included in the build unless you add them yourself.
Because bagelCMS runs entirely in the browser, your content never touches our servers. In fact, we don't even have servers to collect your data.
A simple 3-step recipe for static sites.
Create your custom post types (e.g., 'Blog', 'Projects') and add fields like text, images, or markdown.
Add your content using the built-in editor. Everything saves instantly to your browser's local storage.
Hit 'Bake'. bagelCMS compiles your content into clean HTML files and pushes them directly to your GitHub repo.
How does a browser-based CMS actually work? We get that a lot.
Your data is saved in your browser's IndexedDB storage. It stays on your specific device (laptop, desktop). It never sends data to a remote database. We highly recommend using the "Export ZIP" or "GitHub Sync" features to back up your content regularly.
Yes! Once you have loaded the bagelCMS web app once, your browser caches the application files (Service Workers). You can disconnect from the internet, open the app, write content, generate HTML files, and export them as a ZIP file—all without a connection.
You define a Post Type by creating a simple JSON schema. For example, you can create a "Documentation" type with fields like Title, Slug, Body (Markdown), and Category. When you generate your site, bagelCMS creates the exact folder structure and HTML files based on those types.
Yes. You connect your GitHub account via secure OAuth. When you click "Bake & Push", bagelCMS uses the GitHub API to commit your generated HTML files directly to the `main` or `gh-pages` branch of your chosen repository, instantly updating your static site.
Clearing your browser cache or local site data will delete your content from that browser. This is why we built the GitHub sync feature—as soon as you push to GitHub, your content is safely stored in the cloud. You can always re-import it.
Notes, guides, and updates from the bakery.
The modern web needs a content layer as flexible as it is delicious. Here is why we ditched the monolith.
A step-by-step guide to baking your content and pushing it straight to GitHub Pages.
Do not be restricted by Posts and Pages. Model Docs, Recipes, or anything with a JSON schema.