First extraction attempt: record-collector as a standalone frontend — turso, then Supabase, then frozen

Why Care?

The Bolt-era monolith proved the shape of the workshop but everything was welded into one React app. The next question was: can we pull one surface off cleanly? Pick the upstream-most one — record-collection, the part that everything else depends on — extract it into its own frontend repo, run it standalone, and see what falls out.
The README on that repo, written before the first commit, says it cleanest:
ℹ️
"Pulls in records in any way and makes them available to State via API, meant to be a remote to a monorepo."
That sentence is now the job description of the record-collector in the federated rebuild. The extraction attempt didn't finish, but the conceptual contract it surfaced did.

What's New?

(Reconstructed from mpstaton/record-collector, three commits over 2025-03-03 → 2025-03-04.)
CommitDateMessageWhat it did
8cb156c2025-03-03"CSV upload is now working in state"First running version. CSV → in-memory store.
cc87bff2025-03-03"removed turso"DB swap mid-flight. The turso.sql schema stayed in-tree as a tombstone.
507bc572025-03-04"iterating on onHover and isSelected states"UI polish on the RecordList. Last commit before freeze.
  • RecordCollector.tsx — top-level page for the standalone frontend.
  • DataConnectModal.tsx + DataSourceConnector.tsx — wiring up external data sources.
  • DataImportModal.tsx + DataSourceImporter.tsx — the CSV + import-source UX. The CSV path is the one that actually shipped working.
  • RecordList.tsx — render of records pulled into local state. The hover/selection iteration in the final commit suggests we were starting to think about what record-level interaction looks like before the next pipeline stage.
  • store/supabase.ts alongside store/index.ts — Supabase as the post-turso backing store.
  • StyleX for styling (laerdal-theme.stylex.ts, tokens.stylex.ts) — a deliberate departure from the monolith's Tailwind, exploring whether a typed-tokens approach made more sense for an independently-deployable microfrontend.

Why We Stopped

Two days in, the question shifted from "can we extract this?" to "what's the shell this gets extracted into?" Extracting one frontend without the host that loads it as a remote is a Rube Goldberg machine — you have something runnable but no contract for how it composes with anything else.
That question — what's the federation contract, what hosts the remotes, how do shared components travel — became the focus, and stayed the focus through April / May / June. Tanuj came in at the end of July with the answer: a Vite host shell with . That work made record-collector's re-extraction trivial when it landed a few days later.
mpstaton/record-collector is preserved private; the live submodule at lossless-group/record-collector (the one the federated workshop actually loads) is the lineage continuation, not a literal fork.
ℹ️
Backfilled from the mpstaton/record-collector repository on 2026-05-12. Source commits: 8cb156c, cc87bff, 507bc57.