49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# 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
|
||
|
||
```bash
|
||
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
|
||
`/festival` route 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 in `ARCHITECTURE-VALIDATION.md §7`).
|