summaryrefslogtreecommitdiff
path: root/requirements/architecture/arch-v1.md
blob: b60fadab8c1bd3adbed97fa875d84833e4e6ca5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Architecture

![architecture diagram](./architecture.png)

Status: draft

- 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 (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 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 backup service
- The backup service must communicate to the backups bucket via HTTPS
- There must be a backups bucket
- There must be a server machine
- The backups bucket and the server machine must be different machines
- 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
- There must be documented processes for installing, updating and operating the
  software on the server machine
- There must be documented processes for installing and updating the desktop GUI
  on the user's machine
- There must be a documented process for recovering the server machine from a
  backup after a failure
- There must be a Web app server, which serves a Web GUI over HTTPS
- The Web GUI must persist config and caches to Local Storage
- There must be an SMS API
- The SMS API must send and receive messages to the CRDT sync server via Unix
  sockets

## TBC

- What kind of NoSQL database should be used on the server?