Fruit.Cards · Data-engineering platform
Expanse
A local-first incremental computation and visualization engine.
Fruit.Cards is a data-engineering platform, together with its data computation and visualization engine, currently developed under the working name Expanse (subject to change).
The engine is a local-first incremental computation engine written in Rust and compiled to WebAssembly, running in the browser with a Cloudflare-hosted backend, and is built on permissively licensed open-source foundations, including Salsa and Apache DataFusion.
The engine originated and remains a component of the Fruit.Cards data-engineering project.
RustWebAssemblyCloudflareSalsaApache DataFusion
How it works: change one value, recompute only what depends on it.
The engine records which inputs each result was computed from. Change a value and it re-evaluates only the results downstream of that change, reusing the rest from cache. Adjust an input and watch which results re-run. The evaluation counters tick only when a result actually recomputes.
Inputs
| A | 3 |
| B | 4 |
| X | 9 |
Results
| result | formula | value | status | evals |
|---|---|---|---|---|
| C | = A + B | 7 | ready | 1 |
| Y | = X × 2 | 18 | ready | 1 |
| D | = C × 10 | 70 | ready | 1 |
In a data pipeline: aggregate a table, recompute only the group that changed.
The same idea scales to data. This query groups a source table by region and sums each group. Edit a row and only the group it belongs to is recomputed; the other groups are reused from cache.
Source table: sales
| zone | region | amount | edit |
|---|---|---|---|
| North West | west | 120 | |
| North East | east | 80 | |
| South West | west | 50 | |
| South East | east | 40 |
Group totals
| region | total | status | evals |
|---|---|---|---|
| west | 170 | ready | 1 |
| east | 120 | ready | 1 |
Fruit.Cards · Data-engineering platform.