diff options
Diffstat (limited to 'requirements/architecture/arch-v1.0.0.md')
| -rw-r--r-- | requirements/architecture/arch-v1.0.0.md | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/requirements/architecture/arch-v1.0.0.md b/requirements/architecture/arch-v1.0.0.md new file mode 100644 index 0000000..014cd59 --- /dev/null +++ b/requirements/architecture/arch-v1.0.0.md @@ -0,0 +1,63 @@ +# Architecture + +Status: accepted + +## Problems + +- Schist must have a read/write SMS interface (req-031, req-045, req-047, + req-053) +- Schist must have a read/write desktop interface (req-021, req-023, req-048, + req-052) +- Schist must read transactions automatically from a banking API (req-015) +- Schist must persist buckets, pipes, drips, and transactions (req-034, req-056, + req-057, req-058, req-051) +- Schist's persisted data must be resilient and recoverable (req-064) +- Schist should have a Web GUI (ass-018) + +## Decisions + + + +- There must be a desktop GUI implemented in iced.rs (ard-000) +- There must be documented processes for installing and updating the desktop GUI + on the user's machine (ard-000) +- The desktop GUI must persist domain entities to an SQLite file (ard-001) +- The desktop GUI must persist config and caches to files (ard-002) +- There must be a CRDT sync server (ard-003) +- There must be a REST API, which sends and receives messages to and from the + desktop GUI and the Web GUI via HTTPS, and sends and receives messages to and + from the CRDT sync server via Unix sockets (ard-004, ard-011) +- The Web GUI must persist domain entities in IndexedDB (ard-005) +- The CRDT sync server must persist domain entities in an SQLite file (ard-006) +- There must be a backups bucket, running on a separate machine to the CRDT sync + server and the users' machines (ard-007) +- There must be a documented process for recovering the server machine from a + backup after a failure (ard-007) +- There must be a backup service, which makes regular backups of the CRDT sync + server from the same machine, and stores the backups in the backups bucket + over HTTPS (ard-007) +- The server machine must host the CRDT sync server, the SQLite file, the backup + service, the REST API, the SMS API and the Web GUI (ard-008) +- There must be documented processes for installing, updating and operating the + software on the server machine (ard-008) +- There must be a Web app server, which serves a Web GUI over HTTPS (ard-009) +- The Web GUI must persist config and caches to Local Storage (ard-010) +- There must be an SMS API (req-031, req-045, req-047, req-053) +- The SMS API must send and receive messages to the CRDT sync server via Unix + sockets (ard-011) + +## Gaps + +- Schist must read transactions automatically from a banking API (req-015) +- Schist must not allow anybody other than the user to access its data at rest + (req-062) +- Schist must not allow anybody other than the user to access its data in motion + (req-063) +- Right now we're assuming that Schist should have a Web GUI (ass-018). Can we + trace this assumption back to user needs? +- Do we need or want any virtualisation or containerisation on the CRDT sync + server? +- Are there expensive lookups or aggregations we should be caching? If so, how + and where should we implement caching? +- Do we want or need any monitoring or logging? +- What patterns or frameworks should we use -- or avoid -- in the Web GUI? |
