# ard-001: SQLite for desktop storage ## Problem Schist needs a desktop GUI, and this desktop GUI needs a storage medium, in order to store domain entities, such as transactions, buckets, pipes and drips. ## Options - SQLite - Bespoke file storage - NoSQL database - Other SQL database ## Decision Schist's desktop GUI will persist domain data in an SQLite file. SQLite is well-supported in Rust via the rusqlite crate, and we are going to be writing the desktop GUI in Rust as a result of ard-000. SQLite is distinctive in that it runs in-memory but stores data in a file. The main motivation for having databases running as separate processes is that it enables horizontal scalability, but for a single-user app running locally, this is not a major concern. Resilience is easy and transparent in SQLite. It lives in a file on the user's hard drive. If they want extra resilience, they can back up their hard drive. There is no need to take on the complexity of managing bespoke file storage.