diff options
| author | Joe Carstairs <me@joeac.net> | 2025-07-17 07:21:56 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2025-07-17 07:21:56 +0100 |
| commit | 30a50108f7d7246c38fabd0e8c895c644d2ae106 (patch) | |
| tree | 983866597b609678565991d2c15443bb655f484e /requirements | |
| parent | adc9078dd674d6849e24add3ad9412858ed4697f (diff) | |
add ard-002, ard-003, ard-004
Diffstat (limited to 'requirements')
| -rw-r--r-- | requirements/architecture/arch-v1.md | 12 | ||||
| -rw-r--r-- | requirements/architecture/ard-002.md | 4 | ||||
| -rw-r--r-- | requirements/architecture/ard-003.md | 13 | ||||
| -rw-r--r-- | requirements/architecture/ard-004.md | 22 |
4 files changed, 44 insertions, 7 deletions
diff --git a/requirements/architecture/arch-v1.md b/requirements/architecture/arch-v1.md index 999cb23..fd25708 100644 --- a/requirements/architecture/arch-v1.md +++ b/requirements/architecture/arch-v1.md @@ -4,12 +4,11 @@ - There must be a desktop GUI implemented in iced.rs (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 -- The desktop GUI must send and receive messages to the REST API via HTTPS -- There must be a REST API -- The REST API must send and receive messages to the CRDT sync server via Unix - sockets -- There must be a CRDT sync server +- 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) - The CRDT sync server must send and receive messages to the NoSQL database via Unix sockets - There must be a backup service @@ -19,7 +18,6 @@ - There must be a Web app server, which serves a Web GUI over HTTPS - The Web GUI must save domain entities to IndexedDB - The Web GUI must persist config and caches to Local Storage -- The Web GUI must send and receive messages to the REST API via HTTPS - There must be an SMS API - The SMS API must send and receive messages to the CRDT sync server via Unix sockets diff --git a/requirements/architecture/ard-002.md b/requirements/architecture/ard-002.md new file mode 100644 index 0000000..0c5fab8 --- /dev/null +++ b/requirements/architecture/ard-002.md @@ -0,0 +1,4 @@ +# ard-002: desktop GUI persists config and caches to files + +The desktop GUI must persist config and caches somehow. Nobody has considered +any alternatives, except that it stores it in files. So that's what we'll do. diff --git a/requirements/architecture/ard-003.md b/requirements/architecture/ard-003.md new file mode 100644 index 0000000..cb5486a --- /dev/null +++ b/requirements/architecture/ard-003.md @@ -0,0 +1,13 @@ +# ard-003: CRDT sync server + +I'd like a local-first architecture, because: + +- It means I can develop a working local app first, then extend it to sync with + other devices +- It's a cool architectural pattern I'd like to practice building +- It makes my app more resilient against network issues +- It makes my app more performant +- It means my data lives locally, which is nice + +There is really only one mature local-first architectural reference, and that +involves a CRDT sync server as an essential component. So that's what we'll do. diff --git a/requirements/architecture/ard-004.md b/requirements/architecture/ard-004.md new file mode 100644 index 0000000..9ce6d73 --- /dev/null +++ b/requirements/architecture/ard-004.md @@ -0,0 +1,22 @@ +# ard-004 + +## Problem + +There needs to be an inter-process interface available at a distance between the +CRDT sync server and the UIs. + +## Options + +- Internet + - Web + - REST API + - GraphQL API + - Gopher + - DNS +- Landline +- Carrier pigeon + +## Decision + +REST API. GraphQL is unfamiliar to me, and REST is adequate. All the other +options are silly. |
