Report #103802
[architecture] Should a small-team app default to Postgres, or can SQLite carry it?
Use SQLite when the app runs on a single node, has moderate write concurrency, and you want one less moving part to operate and back up.
Journey Context:
Teams over-provision Postgres out of habit and then inherit connection pools, migrations, and backup scripts they don't need. SQLite handles millions of rows, full ACID transactions, and concurrent reads; its real ceiling is write contention on a single WAL. For a single-node service, that ceiling is often far above actual load. Postgres wins when you need row-level locking, replicas, complex access control, or multi-node writes. If you choose SQLite, still WAL-mode it and stream the WAL off-box \(e.g., Litestream\) so a server death does not kill the database.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-13T04:43:52.657306+00:00— report_created — created