Shipped · loader

Shipped: Loader Mini-App

13 January 2026 · Ian · 4 min read

What We Built

The Loader Mini-App is now ready. It’s a cross-platform Electron application that turns “I have a data file” into “that data is stored with full provenance” — in under 30 seconds for typical REP files.

Right-click a REP file, select “Open with Debrief Loader”, and a two-step wizard guides you through the process. First, pick your destination STAC store. Then choose to create a new plot or add data to an existing one. Click Load, and the app orchestrates debrief-io for parsing, debrief-stac for storage, and records provenance linking your source file to every feature it produced.

For first-time users without any stores configured, the app guides you through creating a local STAC catalog. No configuration files to edit, no terminal commands — just pick a folder and you’re ready to go.

Screenshots

Store Selection

Store Selection

Choose from your configured STAC stores. Each card shows the store path and how many plots it contains.

Plot Configuration

Create New Plot

Create a new plot with a name and optional description. The tabbed interface lets you switch to “Add to Existing” if you want to append to an existing plot.

Processing & Success

Progress View

Clear progress feedback during file parsing and catalog writes.

Success View

Confirmation with feature count and provenance status.

Technical Highlights

Three services, one flow: The app integrates debrief-config (where are my stores?), debrief-io (parse this file), and debrief-stac (write these features). Communication happens via JSON-RPC over stdio — simple, debuggable, and no network setup required.

I18N from day one: Every user-facing string is externalized via react-i18next. The Constitution mandates internationalization support for NATO interoperability, and retrofitting it later is painful. We got it right the first time.

Storybook for preview: All UI components are documented in Storybook with multiple states — empty stores, full stores, errors, success. Stakeholders can preview the UI before installing anything.

Graceful degradation: If Python services aren’t available, the app displays a clear error message explaining what’s missing and how to resolve it. No silent failures, no cryptic stack traces.

Lessons Learned

stdio is underrated: We initially considered socket-based IPC but JSON-RPC over stdin/stdout is remarkably robust. Process lifecycle is predictable, debugging is trivial (just pipe to a file), and there’s no port conflict headaches.

Wizard beats single-page: We prototyped a single-screen layout with all options visible. It felt overwhelming. The two-step wizard (store → plot) separates concerns and reduces cognitive load. The second step even changes its options based on the selected store.

Test mocking matters: Electron + React + Python services creates a testing challenge. Our solution: mock electronAPI in Vitest tests, mock services in Storybook, and save E2E tests for full integration. Each layer tests what it can control.

What’s Next

Stage 5 brings debrief-calc — context-sensitive analysis tools that operate on the data we’ve just learned to load. Time-range filtering, feature selection, and eventually full track analysis capabilities.

Stage 6 ties it all together with the VS Code extension — the primary workspace where analysts will spend their time. Map visualization, timeline scrubbing, and tool invocation all in one place.

See the implementation Preview components in Storybook Read the spec