Built for indie hackers and build-in-public devs

A hacker blog
that actually looks like one.

Monospace everything, ANSI-colour accents, real syntax highlighting, GitHub webhook publishing, and `j/k` keyboard nav. The brutalist Terminal theme for devs who write in vim and ship in one keystroke.

Six reasons Ghost users keep switching

Every feature below is in the box. No plugin hunt, no theme fork, no weekly CSS patch to keep the copy button styled.

Monospace everything, zero pretty

Body text in JetBrains Mono, headings in the same family at heavier weights, link underlines that actually line up with the x-height. The Terminal theme is a deliberate rejection of variable-width web typography, and it loads in 320 ms because there is no webfont acrobatics going on behind the scenes.

Syntax highlighting with a copy button, not a carousel

Code blocks ship with real Shiki highlighting, a copy-to-clipboard button that honours the indentation, language tags in the corner, and line numbers when a post is longer than twenty lines. No Prism plugin install, no copy button add-on, no dependency on a third-party syntax CDN that breaks when the CDN sunset-emails you.

Markdown import straight from your existing repo

Point the importer at a folder of `.md` files with YAML front-matter and every post lands in VeloCMS with slugs, categories, and frontmatter dates intact. Drafts stay drafts. Published stays published. The Hugo-to-VeloCMS path is one CLI command away, and the Markdown export ships with the same front-matter so the bridge runs both ways.

RSS, JSON feed, API access — the feeds your readers want

RSS 2.0 at `/feed.xml`, JSON Feed at `/feed.json`, Atom for the holdouts, full API access for anyone who wants to script their own scraper. Every post ships with `application/ld+json` on the same page. There is no platform walled-garden reading VeloCMS cannot surface to the feed of your choice.

GitHub integration — publish from a commit

Tag a commit with `#blog` and the webhook drafts a post using the commit body. Tag with `#publish` and it goes live. Changelog entries pull from git history. Readers who click through a Show HN link land on a page that credits the commit and links back to the repo, because that is how build-in-public is supposed to look.

Keyboard navigation that actually works

`j` scrolls to next post, `k` previous, `g` to home, `/` focuses search, `?` opens the shortcut overlay, `Esc` dismisses everything. Same muscle memory you use in vim and mutt. The shortcut map is announced to screen readers via `aria-keyshortcuts` so accessibility is not a compromise on brutalism.

VeloCMS vs Ghost vs Hugo

FeatureVeloCMSGhostHugo
Monospace theme out of the boxYesCustom CSSCustom CSS
Shiki syntax highlighting built inYesPluginYes
Markdown import with front-matterYesCSV onlyYes
RSS + JSON Feed + AtomYesRSS onlyYes
GitHub webhook publishYesNoCI/CD
j/k keyboard navYesNoNo
Hosted with sub-1s LCPYesDependsSelf-host
Paid posts via Stripe (0% fee)YesYesPlugin

Frequently asked questions

What's a good CMS for hacker and indie tech blogs?

VeloCMS with the Terminal theme is designed for build-in-public devs who want monospace typography, real syntax highlighting, Markdown import from an existing repo, and j/k keyboard navigation. Ghost gets close but lacks the Terminal aesthetic and the GitHub webhook publish flow.

Does it have a terminal-style monospace theme?

Yes. The Terminal theme is a deliberate rejection of variable-width web typography: JetBrains Mono body text, ANSI-colour accents, and a brutalist layout that loads in 320ms because there's no webfont acrobatics. It's the only CMS theme we know of that looks like `less /var/log`.

Can I write in Markdown or import existing posts?

Yes. Point the importer at a folder of .md files with YAML front-matter and every post lands with slugs, categories, and dates intact. Drafts stay drafts. The Hugo-to-VeloCMS path is one CLI command. Markdown export ships with the same front-matter so the bridge runs both ways.

How fast does it actually load? Show numbers.

Terminal theme pages average 320ms Time to First Byte, sub-1s LCP at p75. The JS bundle is under 150KB gzipped. Code blocks are server-rendered HTML with CSS highlighting — no JavaScript syntax highlighter running on every page load. Lighthouse Performance averages 97/100 on Terminal theme sites.

Is the codebase auditable? Can I read the source?

Yes. VeloCMS is source-available under a fair-code licence — you can read every line, audit the security model, and verify the HMAC webhook implementation. No compiled-only distributable. The plugin SDK is MIT. If you find a security issue, the responsible disclosure process is on the developer portal.

Can I deploy on my own infrastructure?

Yes. VeloCMS ships as two containers: Next.js frontend and PocketBase backend. Run them on a Hetzner VPS, Fly.io, Railway, or any Docker-capable host. VELOCMS_MODE=single gives you a single-PocketBase setup with zero external dependencies beyond Cloudflare R2 for media storage.

Does it support GitHub-Flavored Markdown in the editor?

Yes. The TipTap editor supports tables, task lists, strikethrough, fenced code blocks with language detection, and inline code — all the GFM extensions. Paste a GitHub README into the editor and the formatting comes through. Code blocks receive Shiki highlighting automatically based on the language fence.

What about syntax highlighting for obscure languages?

VeloCMS uses Shiki for syntax highlighting, which supports 200+ languages including Zig, Gleam, Nix, Janet, Fennel, and every mainstream language you'd expect. The language badge in the top-right corner of each code block auto-detects from the fence tag. If your language isn't in the default bundle, you can add it via the plugin API.

git push origin blog

Move the Markdown archive, keep the feed URLs, stop writing CSS for the copy button. 14-day trial, cancel anytime, full Markdown + images export on day one.

Start 14-day trial

Long-tail content portfolio

100 niches. One CMS.

VeloCMS ships dedicated landing pages for 100 expert communities — photographers, beekeepers, ceramicists, philatelists, fountain-pen collectors, and 95 more. Each in its own vocabulary.