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
| Feature | VeloCMS | Ghost | Hugo |
|---|---|---|---|
| Monospace theme out of the box | Yes | Custom CSS | Custom CSS |
| Shiki syntax highlighting built in | Yes | Plugin | Yes |
| Markdown import with front-matter | Yes | CSV only | Yes |
| RSS + JSON Feed + Atom | Yes | RSS only | Yes |
| GitHub webhook publish | Yes | No | CI/CD |
| j/k keyboard nav | Yes | No | No |
| Hosted with sub-1s LCP | Yes | Depends | Self-host |
| Paid posts via Stripe (0% fee) | Yes | Yes | Plugin |
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