A lightweight spreadsheet application positioned between a calculator and a full office suite — fast loading, common spreadsheet operations.
/frontend/ - ClojureScript (Reagent + re-frame, shadow-cljs). Fully functional standalone./server/ - Express, minimal; will eventually handle persistence and collaboration.The spreadsheet data is a nested map: {column-letter {row-number {:value ...}}}
Example:
{"A" {1 {:value 78 :inbound [...]}
3 {:value "=B2 * 4" :refs [...]}}
"B" {2 {:value "=A1 + 3" :refs [...] :inbound [...]}}}
= and are evaluated using math.js library=sum(A1:A10):refs - forward references (cells this formula depends on):inbound - back references (cells that depend on this cell):display - computed/evaluated value shown to user:value - raw user input:dirty - flag indicating re-evaluation neededA cell change re-parses references, updates :refs/:inbound, evaluates the cell, then recursively evaluates its :inbound queue (cycle detection prevents infinite loops).
todo.md has a running list of desired changesshadow-cljs.edn (not just package.json), then restart the dev server