From ee35cd3a79b3c4252f31f7e35f551c3d6a79dcbb Mon Sep 17 00:00:00 2001 From: eltrac Date: Thu, 5 Nov 2026 18:09:48 +0800 Subject: add README.md --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 README.md 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 + -- cgit v1.2.3