Starlog Database
Every captain's log from classic-era Star Trek. Unnecessarily searchable.
The Starlog Database is a searchable archive of every known log entry from classic-era Star Trek — 1,188 captain's logs, personal logs, station logs, and stranger ones, drawn from 518 episodes and nine films across TOS, TAS, TNG, DS9, Voyager, and Enterprise. Full-text search, filters by series, log type, and speaker, stardate lookup, three sort orders, a random-entry button, and a URL that keeps any state you land on shareable.
The interesting constraint: this site is a static export with no server, no database, and no API to hide behind. So the “database” is one 494 KB JSON file, fetched when you open the page and searched entirely in your browser with FlexSearch. The page is a single React client component; visitors who never open it download none of it.
The dataset didn't exist, so a TypeScript pipeline builds it from fan-maintained episode transcripts: a throttled, cache-first fetcher, a parser that extracts log entries and stardates, and a speaker-inference pass for the many logs the transcripts don't attribute. It runs manually, never as part of the site build, and it cleared a quality gate of zero unknown speakers across all 718 episodes before shipping.
It also dragged this repo into having a test runner: Vitest, with a suite of tests over the pipeline and dataset so a future re-run can't quietly ship garbage. Not a hypothetical concern — the first version's speaker filter listed sixteen names and somehow none of them was Picard. It ranks by frequency now. He's first, by a lot.
- Next.js 16 static export
- React 19 client component
- FlexSearch (in-browser full-text)
- TypeScript transcript pipeline
- Vitest