Deployed app: https://romdeau.github.io/leap-sitrep/
LEAP Sitrep is a local-first BLKOUT companion app focused on source-accurate reference, fast lookup, visible citations, and mobile-friendly table use.
The project is being built in vertical slices. The current implementation centers on the first usable read-only reference slice: Authority lore, seed rules topics, the verified Harlow force and units, Dockyard Assault, glossary support, and global search.
- Packets 0-3 are complete.
- Packet 4
Reference UI Vertical Sliceis in progress. - The current app already includes:
- lore pages for the Authority and the timeline
- rules pages for movement, shooting, reactions, smoke, control points, and data attacks
- structured rule subsections such as
2.1,2.2,2.3, and2.4 - the verified Harlow force page and three seed unit pages
- the
Dockyard Assaultscenario page - citation-aware detail views
- command-palette-style search with direct subsection deep links
Planned later packets cover the builder flow, match tracker, broader catalog coverage, and polish.
The app is intended to become a practical BLKOUT player hub for:
- lore and faction reference
- rules and scenario reference
- group and roster building
- table-side game state tracking
Core principles for the project:
- local-first by default
- mobile-friendly for real table use
- citation-heavy for important rules and data
- explicit about uncertainty instead of inventing rulings
- structured data first, UI second
Primary machine-readable inputs:
markdown/BLKOUT-Year-Two-Lore-Primer.mdmarkdown/BLKOUT-PRINT-AT-HOME-RULEBOOK.mdmarkdown/BLKOUT_Supplemental_4-26.md
Additional inputs:
markdown/Unit-Cards-Printable-2026.md- used as OCR assistance, not canonical truth
screenshots/- used for manual verification of the first trusted force slice
Generated datasets are emitted into:
public/data/source-registry.jsonpublic/data/lore/index.jsonpublic/data/rules/core.jsonpublic/data/rules/supplemental.jsonpublic/data/scenarios/core.jsonpublic/data/search/index.jsonpublic/data/forces/index.jsonpublic/data/forces/audit.json
When sources conflict, the app follows this precedence order:
- supplemental rulings and verified support documents
- mode-specific overlays such as matched play
- force card and unit card text
- core rulebook text
- quick reference summaries only after manual verification
If content cannot be reconciled safely, the project should expose the ambiguity rather than silently inventing an answer.
The first vertical slice is intentionally narrow:
- lore: Authority overview and timeline
- rules: movement, shooting, reactions, smoke, control points, and data attacks
- force: Harlow 1st Reaction Force
- units:
- Harlow Control Team
- Harlow Assault Team
- Harlow Springbok AI
- scenario: Dockyard Assault
This slice is the foundation for later builder and tracker work.
- route-based reference experience with React Router
- home hub and section landing pages
- lore, rules, force, unit, scenario, and glossary views
- visible source citations on important records
- core rules are extracted at build time by Bun ETL scripts
- rules now include:
- top-level rule records
- overview text where present
- numbered subsections as structured records
- rule subsections can be deep-linked directly, for example:
/rules/core#rule-subsection-2-3-leaning-out
- generated search index spanning lore, forces, units, rules, glossary, and scenarios
- aliases for common phrases and acronyms
- direct navigation to subsection anchors from search results
- Harlow force and unit data is manually verified against screenshot sources rather than accepted from OCR alone
- Bun 1.3.5
- Node.js 24.x
- TypeScript
- React 19
- Vite 8
- React Router DOM 7
- Tailwind CSS v4
- shadcn/ui-style component primitives under
src/components/ui/ - Lucide React
- Vitest + Testing Library + happy-dom
- ESLint
The app is built for the /leap-sitrep/ base path so it can be deployed to GitHub Pages.
Key directories and files:
src/- application code and UI
scripts/- ETL and data-generation scripts
public/data/- generated machine-readable datasets
markdown/- source markdown used by the ETL pipeline
docs/qa/- packet-by-packet QA notes
blkout-app.md- product intent
blkout-implementation.md- packet workflow and delivery criteria
blkout-progress.md- current project status and handoff notes
session-log.md- session history
- Bun
1.3.5 - Node.js
24.x
bun installbun run devExpected local base path:
http://localhost:5173/leap-sitrep/
bun run build:databun run typecheck
bun run lint
bun run test
bun run buildThe project includes GitHub Actions workflows for:
- CI build validation on pull requests
- deployment to GitHub Pages on pushes to
main
Pages-specific notes:
- the Vite base path is
/leap-sitrep/ - the deploy workflow copies
dist/index.htmltodist/404.htmlso SPA deep links work withBrowserRouteron GitHub Pages
Deployed URL:
The repository includes:
- parser and ETL tests
- data-merging and search-index tests
- app smoke tests for Packet 4 reference behavior
- packet QA notes in
docs/qa/
Recent full validation includes:
bun run build:databun run typecheckbun run lintbun run testbun run build
- Packet 4 is not formally closed yet; it still needs a dedicated manual mobile/desktop QA pass and final Review B confirmation.
- Builder and match-tracker workflows are not implemented yet.
- There is still a cross-dataset id mismatch between lore faction id
the-authorityand force parent idauthority; the current UI tolerates this safely, but the underlying data contract should be normalized later.
Important project rules:
- do not invent missing rules, stats, handlers, units, or weapon data
- preserve citations in generated data and important UI surfaces
- prefer fixing extraction and data contracts in ETL rather than parsing blobs in the UI
- treat OCR-derived card text as untrusted until manually verified
If you are continuing work on the project, start with:
blkout-app.mdblkout-implementation.mdblkout-progress.mdsession-log.md
No license file is currently present in the repository.