diff options
| author | Joe Carstairs <me@joeac.net> | 2025-07-16 23:44:55 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2025-07-16 23:44:55 +0100 |
| commit | adc9078dd674d6849e24add3ad9412858ed4697f (patch) | |
| tree | c2d90c61a888a0776a9625ce2d8a7e19cc4edf86 /requirements/architecture/ard-001.md | |
| parent | 71b012799f7081c80fe8a03a5862e316e22e6d93 (diff) | |
add ard-000, ard-001
Diffstat (limited to 'requirements/architecture/ard-001.md')
| -rw-r--r-- | requirements/architecture/ard-001.md | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/requirements/architecture/ard-001.md b/requirements/architecture/ard-001.md new file mode 100644 index 0000000..0137251 --- /dev/null +++ b/requirements/architecture/ard-001.md @@ -0,0 +1,30 @@ +# 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. |
