diff options
| author | eltrac <hi@eltr.ac> | 2026-11-05 18:09:48 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-11-05 18:09:48 +0800 |
| commit | ee35cd3a79b3c4252f31f7e35f551c3d6a79dcbb (patch) | |
| tree | 93eb365044df45580890149638b41ebe0c7244df /README.md | |
add README.md
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..6acecbe --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# suproc
+
+*Suproc* is *corpus* (Latin for "body") spelled backwards. A local-first, privacy-focused spreadsheet app.
+
+## Architecture
+
+Basically, light server and fat client.
+
+### Server
+
+- Server is only used for data transportation and broadcasting.
+- Everything is encrypted before sending to the server and only decrypted on client-side.
+- Server is also used for key exchange in between clients.
+- Server is optional and everything else works offline.
+
+### Client
+
+- Client is the "Database"
+ - Client stores original and copies of sheets.
+ - When sharing, the client sends a copy of sheet to the other client
+ - Copies across different clients are synced using CRDT through server
+ - Client stores data in open formats.
+- Client makes data retrieval and manipulation easy and fun
+ - Client embeds [Janet](http://janet-lang.org/) to manipulate data (e.g. making HTTP requests, filtering by custom computed fields and etc.)
+ - Client supports cron job that updates data (executes Janet script) automatically
+ - Client supports custom commands and Vim-like key bindings
+- Client is extensible by the power of Lisp
+ - Client acts as a Janet interpreter itself, which is sort of like Emacs
+ - Client can be extended using plugins written in Janet
+
|
