GitHub

Architecture

Pick a stage to learn more about its moosbett architecture.

Stage

Every edit is automatically “staged” in memory by the editor, as a minimal overlay of just the edited features. The edited features can be joined to the immutable base data by fid, and rendered in whatever way best suits your project. Our demo map renders what would be committed as the “current” state, with changed features highlighted while editing.

Base fid 1fid 2 fid 3fid 4
Overlay fid 3 · modified fid 4 · deleted fid 5 · added
↓ our demo renders the union
Rendered fid 1fid 2 fid 3′fid 5

Commit

A commit writes the staged overlay to a layer's store. This store is a flat key-value space that can be hosted in either the browser's IndexedDB (our demo's default) or in cloud blob storage. Hosting in cloud blob storage enables concurrent editing. Teammates will see recently committed edits the moment they commit and re-read the branch ref. The branch ref only advances by compare-and-swap, so stale writers are always rebased.

Below are the key-value objects a new commit writes to the store.

commits/c7e2….json json manifest — author, time, message, parent commit, and the ordered list of data + delete files that rebuild the layer
data/c7e2….parquet geoparquet delta — whole copies of just the features this commit added or changed. A feature is one row: a geometry plus its attributes, keyed by fid. Why the whole row?
deletes/c7e2….json json delete list — the fids this commit removed
refs/branches/main 64 bytes branch ref — a simple named pointer to the current head commit

Bundle

Bundling turns a branch into one portable file — a <branch>.moos.parquet, the moosbett bundle — at your choice of fidelity. Each tier takes a different approach to history, appropriate for different use-cases — click a row for exactly what is kept, the tradeoff, and the call that produces it.