The Problem
Setting up a personal blog shouldn't feel like deploying a production-grade SaaS app. Between configuring databases, dealing with authentication, and hosting, it’s easy to lose hours (or days) on stuff that should just work. Platforms like Medium are fine until you need control over your content, branding, or data. Self-hosting alternatives exist, but they’re often bloated, overly complex, or just plain annoying to work with.
What This Does
btw strips blogging down to the essentials. It’s an open-source Medium alternative that lets you self-host your blog in minutes. The repo is built with React and deploys via Docker, so you can skip the endless dependency hell and just get things running. The entry points are clean (list/assets/index.html for the UI, list/src/actions/app.ts for app-level actions) and the Docker setup is straightforward. The main config file, deploy/docker-compose.dev.yml, handles database setup, admin user creation, and optional extras like image uploads via S3.
The blogging interface is powered by list/src/components/Tiptap.jsx, a rich text editor component. It’s not bloated—just enough functionality to publish decent-looking posts without feeling like you need a manual. For custom branding, you’ve got access to font files in list/assets/media/fonts and icon sets in list/assets/media/icons.
Authentication is dead simple. You can opt for a basic login or toss in an OTP setup by defining ADMINOTP in the Docker config. Want SMTP for email-based login? Just plug your credentials into the environment variables (SMTPHOST, SMTPUSER, etc.).
Real-World Use
Imagine you’re launching a blog for your side hustle. Clone the repo, set your ADMINEMAIL and ADMIN_SLUG in docker-compose.dev.yml, and docker-compose up your way to a working site. Use the editor (list/src/components/Tiptap.jsx) to write posts, and customize the look by swapping out fonts or icons in list/assets/media.
Here’s a snippet to set up the admin user and database:
Run docker-compose up and you’re live. No 20-step setup guide, no “why isn’t this working” rabbit holes.
The Bottom Line
btw is the no-nonsense blogging platform for devs who don’t want to fight their tools. It’s easy to set up, extensible, and gets out of your way. The Docker-first approach makes it ideal for self-hosting without headaches. Downsides? It might be overkill if you just need a couple of static pages. But if you want control without complexity, this gets the job done.