- TypeScript 83.8%
- JavaScript 5.9%
- CSS 5.4%
- HTML 4.6%
- Shell 0.3%
|
|
||
|---|---|---|
| .github/workflows | ||
| .shots | ||
| content | ||
| experiments | ||
| pipeline | ||
| public | ||
| scripts | ||
| share | ||
| src | ||
| tests | ||
| .directory | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.json | ||
| ARCHITECTURE-DECISIONS.md | ||
| ARCHITECTURE-DESIGN.md | ||
| ARCHITECTURE-VALIDATION.md | ||
| ASSUMPTIONS-AND-OPEN-QUESTIONS.md | ||
| CHECKPOINT-encryption.md | ||
| DISCOVERY.md | ||
| eslint.config.js | ||
| IMPLEMENTATION-CONTRACT.md | ||
| index.html | ||
| lumen-share.zip | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| SPIKE-01-INDEXEDDB-IOS.md | ||
| SPIKE-02-ATOMIC-DATASET-UPDATES.md | ||
| SPIKE-03-MAP-REPRESENTATION.md | ||
| SPIKE-04-FESTIVAL-DATA-PACKAGE.md | ||
| SPIKE-05-OFFLINE-READY.md | ||
| SPIKE-06-EMERGENCY-BASELINE.md | ||
| SPIKE-07-BOOTSTRAP.md | ||
| SPIKE-08-TIME-MODEL.md | ||
| theme-preview.html | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Lumen — offline-first festival PWA
Implementation is complete through Stage 8 (A/B activation). UI feature views and transport orchestration remain staged work per IMPLEMENTATION-CONTRACT.md.
- Validated architecture:
ARCHITECTURE-VALIDATION.md(SPIKE-01…08 reconciled) - Contract:
IMPLEMENTATION-CONTRACT.md— single source for implementation rules, boundaries B-1…B-7, invariants I-1…I-17 - Implemented: strict TypeScript foundation, PWA shell/service worker, package schema and pipeline, IndexedDB A/B persistence, signed-package verifier, and activation/rollback coordinator
- No transport/network orchestration, mesh, or accounts yet — see contract Stages 9…19
Quick start
npm install
npm run typecheck # tsc --noEmit strict
npm run lint # eslint with boundaries B-1…B-7
npm run format # prettier --check
npm test # vitest — unit and contract tests
npm run ci # typecheck + lint + format + test + build
Project structure
See IMPLEMENTATION-CONTRACT.md §4 and per-directory README.md.
Navigation
The desktop shell uses a fixed 240px sidebar on the left. It contains five large, evenly spaced vertically stacked navigation buttons:
- HOME — the launcher landing page at
/, showing a centered 2×2 grid of the four destination tiles. - EMERGENCY — the emergency destination and retains its red (rose) background.
- SCHEDULE — the existing schedule route and functionality.
- MAP — the existing map route and functionality.
- INFORMATION — the navigation label previously shown as FESTIVAL; the existing
/festivalroute and page functionality remain intact.
The root route / boots into the home launcher (no redirect). On every destination
page, the header brand ("LUMEN") acts as a home/back button — it is highlighted with
a leading chevron and returns to the launcher in one tap.
The sidebar preserves the SolLunar deck aesthetic, thin borders, typography, and visual hierarchy. On smaller screens it becomes a responsive fixed bottom navigation bar. All routes, one-tap emergency access, active-route state, and navigation behavior remain unchanged.
Branches
main— validated architecture plus implemented stages (YELLOW device/content/ops gates tracked inARCHITECTURE-VALIDATION.md §7).