The event-sourced-spreadsheet-data
module is the heart of InfiniSheet. It’s a common, cross-platform library that implements the SpreadsheetData
interface based on platform dependent implementations of the EventLog
, BlobStore
and Workers
interfaces.
-
Event Sourced
Front End
Snapshot Benchmarking with Vitest
The framework for our event sourced spreadsheet is in place. Entries are being written to the log, snapshots are created at regular intervals, clients start by reading the most recent snapshot and then following along as the log is updated. All this has been done tracer bullet style, with simple code that is largely unoptimized and not scalable.
-
Event Sourced
Snapshot Completion
We don’t yet handle the case where a snapshot completes when a client is already up and running. The snapshot could have completed because this client triggered it, or another client did. How can clients find out that a snapshot workflow has completed? They’ll pick up the new snapshot when they start up, but a long running client could end up with a huge log segment unless there’s some kind of explicit notification.
-
Event Sourced
Tracer Bullet Snapshots
It’s finally time to create snapshots as my event sourced spreadsheet’s event log grows. It seemed like I was never going to get here. There’s a laundry list of pre-work that I needed to complete first.
-
Event Sourced
Infinisheet Cell Map
I have all the bits of infrastructure needed to start saving snapshots of my event sourced spreadsheet. The source of truth for the spreadsheet content is in an event log. I’ve defined a Blob Store interface to serialize snapshots as blobs of data together with a Workers interface to create snapshots as a background task.
-
Event Sourced
Wiring up the Blob Store and Workers
Now that I have interfaces and reference implementations for a Blob Store and Workers, we can try to wire them up to our tracer bullet prototype.
-
Event Sourced
React Spreadsheet
Asynchronous Spreadsheet Data
Last week’s tracer bullet development showed that I needed to make my
SpreadsheetData
interface more explicitly asynchronous. -
InfiniSheet
Event Sourced
React Spreadsheet
Event Sourced Spreadsheet Data
I’ve been working on my scalable spreadsheet project from opposite ends. So far, most of my focus has been on the front end. I’ve created a virtualized React spreadsheet component that can scale to trillions of rows and columns. The component accesses spreadsheet data via a SpreadsheetData interface based on React’s external store interface.