I wanted a message board that did as little as possible.
Most modern discussion platforms are optimized for engagement: feeds, rankings, reactions, infinite scroll, notifications. The software is rarely complicated in isolation, but the incentives around it are. Because of this, many of these platforms feel paradoxical: overwhelming in activity, yet boring in outcome. You scroll constantly and remember nothing. Engagement metrics reward continuous interaction, not deliberate participation. The easiest way to increase them is to never let the user be done.
msg-bored is an experiment in the opposite direction (except for a little confetti, who doesn’t like confetti?).
It is a single global board. Messages are short. There is no login, no profiles, no voting, no threads, no search, no history beyond 24 hours. If you post too often, you are rate-limited. If you refresh, you see the same thing everyone else sees. The technical stack reflects that constraint. It’s an Astro app with a small server-side API, backed by SQLite via better-sqlite3. There is no queue, no cache layer, no CDN trickery. Writes are synchronous. Reads are simple. If it ever becomes slow, well perhaps it made it too far.
Deployment is intentionally unsophisticated: a single Docker container, exposed through a Cloudflare Tunnel. No load balancer, no autoscaling, no workers. If the container dies, it restarts. If the machine dies, the board disappears. That’s acceptable, poetic even?
Some decisions are deliberately conservative:
- SQLite instead of Postgres: fewer moving parts, easier reasoning.
- Little to no client-side state management.
- No background jobs.
The goal of msg-bored is to be just that. A place where anyone can write a message into the abyss, when bored or otherwise. The fun of it not being in what you see scrolling, but rather in the act of deliberately participating. So why don’t you send a message to a stranger, or post your shopping list?
Try it msgbored.johntrager.net.