dev-tools 8 min read

Outstatic - Git-Based CMS for Markdown and MDX

Outstatic is an open-source CMS that stores content as Markdown and MDX files in your GitHub repo. No database, no external backend. Self-host with Next.js or use the hosted dashboard.

By
Share: X in
Outstatic Git-based Markdown CMS thumbnail

TL;DR

TL;DR: Outstatic is an open-source CMS that commits Markdown and MDX content directly to your GitHub repository, eliminating the need for databases or hosted CMS backends while giving your team a visual editing dashboard.

Source and Accuracy Notes

This post is based on the Outstatic website, the GitHub repository (3,100+ stars), and the Show HN launch (203 points). The project is actively maintained and supports both self-hosted and hosted deployment modes.

What Is Outstatic?

Outstatic is a static site CMS designed for developers who want content stored in Git rather than a database. It provides a visual dashboard for creating, editing, and publishing Markdown and MDX content, with every change automatically committed to your GitHub repository.

The core value proposition is simplicity: no database to manage, no external CMS backend to configure, no sync issues between your content and your codebase. Your content lives alongside your code in GitHub, deploys with your site, and stays version-controlled by default.

Outstatic works with Next.js and Astro projects. You can either self-host the CMS within your existing Next.js application or use the hosted dashboard at outstatic.com.

How Outstatic Works

Architecture Overview

Editor Dashboard Outstatic UI GitHub API Your Repository

                                            Static Site Generator

                                            Deployed Website

The CMS operates as a layer between your content editors and your GitHub repository. When someone creates or edits a post through the dashboard, Outstatic generates the corresponding Markdown or MDX file and commits it directly to your repo via the GitHub API. Your existing static site generator (Next.js, Astro, etc.) picks up the new content on the next build.

Content Storage Model

Unlike traditional CMS platforms that store content in a database and expose it via API, Outstatic treats your Git repository as the single source of truth. Each piece of content becomes a file in your repo with standard frontmatter:

---
title: "My Blog Post"
published: true
created: "2026-06-09"
---

Your content here.

This means your content is portable, version-controlled, and never locked into a proprietary platform. If you stop using Outstatic, your content remains as plain Markdown files in your repository.

Setup Workflow

Option 1: Hosted Dashboard (Fastest)

The hosted option requires zero installation. You sign in with GitHub, grant access to your repository, and start editing immediately.

Step 1: Create an account

Visit outstatic.com and sign in with your GitHub account.

Step 2: Connect your repository

Select the GitHub repository containing your Markdown or MDX content. Outstatic scans the repo for content collections (folders containing Markdown files).

Step 3: Start editing

The dashboard displays your content collections. Create new posts, edit existing ones, or manage drafts. Every save commits directly to your repository.

Option 2: Self-Hosted (Full Control)

Self-hosting gives you complete control over the CMS deployment and keeps the content workflow within your own infrastructure.

Step 1: Install the package

npm install outstatic

Step 2: Add the Outstatic pages

Create the required API routes and pages in your Next.js project. Outstatic provides a CLI command to scaffold these automatically:

npx outstatic init

This creates the necessary files under pages/outstatic/ and configures the API routes for content management.

Step 3: Configure environment variables

Set up a GitHub OAuth app and add the required environment variables:

OUTSTATIC_GITHUB_CLIENT_ID=your_client_id
OUTSTATIC_GITHUB_CLIENT_SECRET=your_client_secret
OUTSTATIC_ALLOWED_EMAILS=[email protected],[email protected]

The OUTSTATIC_ALLOWED_EMAILS variable restricts dashboard access to specific GitHub accounts. Only users with matching email addresses can log in and manage content.

Step 4: Deploy

Deploy your Next.js app as usual (Vercel, Netlify, self-hosted). The CMS dashboard is available at /outstatic on your deployed site.

Deeper Analysis

When Outstatic Makes Sense

Outstatic fills a specific niche in the CMS landscape. It works best when:

  • Your site is already built with a static site generator (Next.js, Astro, Eleventy)
  • Your content team is comfortable with Git-based workflows (or you want to avoid training them on a complex CMS)
  • You want content version control without additional tooling
  • You need to avoid database dependencies for compliance, cost, or simplicity reasons
  • Your content structure is relatively flat (blog posts, docs, changelogs, landing pages)

When to Look Elsewhere

Outstatic is not a fit for every scenario. Consider alternatives when:

  • You need complex relational content models (e-commerce catalogs, multi-level taxonomies)
  • Your editors require real-time collaboration (Google Docs-style simultaneous editing)
  • You need built-in media asset management with transformations
  • Your content workflow requires approval stages, scheduled publishing, or complex permissions
  • You are not using a JavaScript-based static site generator

Comparison with Alternatives

vs. Sanity/Contentful: These are headless CMS platforms with hosted backends, real-time collaboration, and complex content modeling. They offer more features but introduce a database dependency, vendor lock-in, and monthly costs that scale with usage. Outstatic trades those features for simplicity and Git-native storage.

vs. Netlify CMS/Decap CMS: Decap CMS (formerly Netlify CMS) is the closest competitor. Both are Git-based and open-source. Outstatic differentiates with a more polished editing experience (Tiptap-based rich text editor), AI completions, and a hosted option that requires no installation. Decap CMS is more mature and framework-agnostic.

vs. Direct GitHub editing: You could skip the CMS entirely and have editors commit Markdown files directly to GitHub. Outstatic adds a visual interface, rich text editing, and AI-assisted writing without sacrificing the Git-native storage model.

Practical Evaluation Checklist

Before adopting Outstatic, verify these items match your requirements:

  • [ ] Your site uses Next.js or Astro (required for self-hosted; hosted works with any SSG that reads from GitHub)
  • [ ] Your content can be represented as Markdown or MDX files with frontmatter
  • [ ] Your team has GitHub accounts (required for authentication)
  • [ ] You are comfortable with content being stored as files in a Git repository
  • [ ] You do not need complex relational content models or real-time collaboration
  • [ ] Your media assets are stored separately (Outstatic handles text content, not image optimization pipelines)
  • [ ] You have a deployment pipeline that rebuilds your site when the repository changes (standard for static sites)

Security Notes

Outstatic’s security model inherits from GitHub’s authentication and authorization:

  • Authentication: Uses GitHub OAuth for all dashboard access. No separate user database to manage or secure.
  • Authorization: Repository permissions are controlled through GitHub’s standard team and collaborator settings. If someone has write access to your repo, they can publish content through Outstatic.
  • Content storage: All content is stored in your GitHub repository. GitHub’s security controls, audit logs, and branch protection rules apply.
  • Self-hosted considerations: When self-hosting, the CMS runs within your Next.js application. Secure your deployment with standard web application security practices (HTTPS, environment variable protection, OAuth secret management).
  • AI completions: The AI writing assistant sends content to OpenAI’s API. If your content is sensitive, evaluate whether this data transfer is acceptable for your use case.

FAQ

Q: Can I use Outstatic with frameworks other than Next.js? A: The self-hosted version requires Next.js. The hosted dashboard works with any static site generator that reads content from a GitHub repository, including Astro, Eleventy, and Hugo.

Q: Does Outstatic support multiple content collections? A: Yes. You can define multiple collections (blog, docs, changelog, etc.), each mapped to a different folder in your repository.

Q: Is there a limit on the number of posts or collections? A: No. Since content is stored as files in your GitHub repository, the only limits are GitHub’s repository size limits (which are generous for text-based content).

Q: Can I preview content before publishing? A: Yes. Outstatic supports draft status. Content marked as draft is committed to your repository but can be filtered out during your site build process.

Q: Does Outstatic handle image uploads? A: Outstatic focuses on text content (Markdown and MDX). Image uploads are committed to your repository as files, but Outstatic does not provide image transformation or CDN integration. You manage media assets through your existing deployment pipeline.

Conclusion

Outstatic solves a real problem for developers who want a visual content editing experience without abandoning Git-native workflows. It eliminates the database layer, removes vendor lock-in, and keeps content version-controlled alongside code.

The trade-off is feature scope. You will not get real-time collaboration, complex content modeling, or built-in media management. What you get is simplicity, portability, and a CMS that disappears into your existing development workflow.

If you are building a blog, documentation site, or content-driven project with Next.js or Astro, Outstatic is worth evaluating. The hosted dashboard lets you try it in minutes without any installation.