A git-powered blog where commits ARE the content. No CMS, no database — just git.
- Fork this repo
- Enable auto-deployment:
mv .github/workflows/deploy.yml.disabled .github/workflows/deploy.yml git add .github/workflows/deploy.yml git commit -m "Enable GitHub Actions deployment" - Configure your site with a
meta:commit:git commit --allow-empty -m "meta: site config" -m "title: My Blog author: Your Name description: A blog about things" - Write a post with a
blog:commit:git commit --allow-empty -m "blog: My First Post" -m "This is my first blog post. You can use **markdown** here — headings, lists, code blocks, images, everything." - Enable GitHub Pages in your repo settings (Settings → Pages → Source: GitHub Actions)
- Push to
mainand your site deploys automatically
| Prefix | Purpose | Example |
|---|---|---|
blog: |
Blog post | blog: My First Post |
embed: |
Post with video/tweet embeds | embed: Cool Video |
page: |
Static page (shown in nav) | page: About |
meta: |
Site configuration | meta: site config |
Each post automatically displays the git commit author name (git config user.name) alongside the date.
git commit --allow-empty -m "blog: Post Title" -m "Markdown content here.
## Subheading
- List items
- More items
\`\`\`js
console.log('code blocks work too');
\`\`\`"
Put a bare URL on its own line. YouTube, Vimeo, and Twitter/X links are auto-embedded:
git commit --allow-empty -m "embed: Great Talk" -m "Check out this talk:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
It changed how I think about things."
Pages appear in the site navigation:
git commit --allow-empty -m "page: About" -m "# About Me
I write about code and other things."
Key-value pairs in the commit body:
git commit --allow-empty -m "meta: site config" -m "title: My Blog
author: Jane Doe
description: Thoughts on code
favicon: https://example.com/icon.png"
Run the setup script to add a git blog shortcut (alias for git commit --allow-empty):
./bin/setup.shThen write posts with:
git blog -m "blog: My Post" -m "Content here"
git blog -m "embed: Video" -m "https://youtube.com/watch?v=..."
git blog -m "page: About" -m "About page content"
git blog -m "meta: site config" -m "title: My Blog"npm install
npm run dev
The build script reads your git history, filters commits by type prefix, renders markdown to HTML, and outputs a static site to dist/.
By default, the GitHub Actions workflow is disabled (.github/workflows/deploy.yml.disabled). Enable it by renaming the file to deploy.yml — then it will deploy automatically on every push to main.