When I started building Task Master Pro, I reached for PostgreSQL out of habit. Then I stopped and asked: what does this project actually need?
The answer was surprising. For a team management app that would serve a single company, SQLite handles the workload easily. No separate database process, no connection pooling, no Docker containers just to run a database. The entire database is a single file you can copy, back up, or inspect with a CLI tool.
SQLite supports full-text search (FTS5), JSON functions, window functions, and common table expressions. It handles concurrent reads well, and for write-heavy workloads, WAL mode eliminates most contention issues.
The real win is deployment simplicity. One fewer service to manage, one fewer thing to monitor, one fewer thing that can go down at 3 AM.
That said, SQLite isn't always the answer. If you need true multi-user concurrent writes at scale, or if your data lives across multiple servers, reach for PostgreSQL or MySQL. But for side projects and small production apps, SQLite is underrated.