A Git-backed blog editor that saves posts as Markdown files directly to your GitHub repository. No database required — your posts live in version control.
- WYSIWYG editor — bold, italic, headings, lists, blockquotes, code blocks, links, images
- GitHub API integration — every save = a commit to your repo
- Frontmatter management — title, slug, date, excerpt, tags, draft status
- Post dashboard — list, create, edit, and delete posts
- Zero backend — runs entirely in the browser
npm installnpm run devOn first load you'll be prompted for:
- Personal Access Token — create at GitHub → Settings → Developer settings → Personal access tokens (Classic). Needs
reposcope. - Owner — your GitHub username or org name
- Repository — the repo name (must already exist)
- Branch — defaults to
main - Posts folder — the folder inside your repo where
.mdfiles will be stored (e.g.posts,content/blog)
Deploy to Netlify or Vercel by pointing it at this folder:
npm run build
# Outputs to /distImportant: Since this is a SPA with client-side routing, add a redirect rule:
- Netlify: Create a
public/_redirectsfile:/* /index.html 200 - Vercel: It handles this automatically
Posts are saved as Markdown with YAML frontmatter:
---
title: My First Post
slug: my-first-post
date: 2024-01-15
excerpt: A short description for listing pages
tags: writing, thoughts
---
Your post content here...Your GitHub token is stored in localStorage in the browser. This is fine for a personal editor you run yourself, but don't share the deployed URL publicly — anyone who visits it could theoretically extract the token from their own browser session if they know where to look.
For team use, consider adding basic auth via Netlify Identity or similar.
Your posts are Markdown files in your repo. Popular options for rendering them publicly:
- Astro — great Markdown support, fast, static
- Next.js — if you want React on the public side too
- Hugo — very fast static site generator
- Eleventy (11ty) — flexible, minimal
All of these can read Markdown files from the posts/ folder and render them as HTML pages. Let Claude know when you're ready to build the public-facing renderer!