SQLite is an architecture decision
SQLite is often described as the database you start with before moving to a “real” one. That framing misses what makes it useful.
For a local-first tool, desktop app, CLI, or single-node service, SQLite can be the coordination layer: durable state, transactions, migrations, queues, leases, and an audit trail in one file. WAL mode gives readers and writers enough room to work, while constraints keep the rules close to the data.
The important part is treating concurrency as real. Use transactions intentionally. Make claims and retries explicit. Test with more than one connection. When a write must win the lock before reading, say so with BEGIN IMMEDIATE instead of hoping timing behaves.
A small database is not the absence of architecture. Sometimes it is the clearest architecture available.