A markdown CMS that fits in one Cloudflare Worker

Last month I got tired of opening VS Code every time I wanted to fix a typo in a post. I wanted a lightweight web UI that could edit Markdown files stored in a git repo — ideally something I could open on my phone. The result: a Cloudflare Worker that proxies GitHub’s REST API and renders a minimal editing UI. How it works The Worker handles four routes: GET / — lists all .md files in the repo GET /edit?file=path/to/post.md — loads the file and renders a <textarea> POST /save — calls the GitHub API to commit the updated file GET /preview — renders Markdown to HTML via micromark No database. No build step on save. Just an API call and a commit. ...

April 28, 2026 · 1 min · Hiep Nguyen

View transitions are the most underused web feature of 2026

The View Transitions API gives you native-feeling animated page transitions with roughly ten lines of CSS and one line of JavaScript. It shipped in Chromium in 2023, Firefox in 2024, and Safari in 2025. All major browsers support it now. I’ve looked at maybe two hundred personal sites in the past year. Three used view transitions. Why the gap? I think it’s partly discoverability and partly the perception that “animations = complexity.” Neither is true here. ...

April 21, 2026 · 1 min · Hiep Nguyen

Self-hosting in 2026: a lazy person's setup

I’ve been self-hosting things on and off for years. The pattern I’ve settled into is: do the minimum amount of work to make something run reliably, then never think about it again. Here’s what that looks like in practice. The stack One VPS (2 vCPU, 4GB RAM), running: Coolify for deployment — a self-hosted Heroku-alike that handles Docker containers, environment variables, and basic health checks Cloudflare for DNS and a free tunnel, so I don’t need to expose ports or manage TLS myself Restic for nightly backups to Backblaze B2 That’s it. No Kubernetes. No Nomad. No complicated orchestration. ...

March 31, 2026 · 1 min · Hiep Nguyen

SQLite is plenty

For years my reflex was: new project, spin up a Postgres database. It’s what I knew, it’s what most tutorials showed, it’s what most hosting platforms assumed. Then I started using SQLite more and noticed something: for the kind of applications I build, I never noticed the difference. What changed SQLite used to have a reputation problem for production use. That reputation was mostly earned by people using it in contexts where it wasn’t appropriate — high write concurrency, multi-server deployments — and then blaming the database. ...

March 6, 2026 · 1 min · Hiep Nguyen