Stage 1: project foundation (strict TS, lint boundaries B-1..B-7, directory structure, CI, boundary tests)

- dedicated git repo at /home/avi/Projects/Lumen (main)
- TypeScript strict (target ES2022, bundler, exactOptionalPropertyTypes, noUncheckedIndexedAccess)
- ESLint 9 + typescript-eslint strictTypeChecked + eslint-plugin-boundaries for B-1..B-7, no-restricted-globals/syntax for B-1/B-7
- Prettier 3.5
- Structure per IMPLEMENTATION-CONTRACT.md §4 (src/platform/idb|cache|sw, storage, data, sync/{transport,verifier}, domain/{emergency,schedule,map,festival,readiness,clock,favorites}, ui/{components,views,router,render}, app, emergency-baseline, assets, public, content, pipeline, tests, scripts)
- CI: .github/workflows/ci.yml (typecheck + lint + format + test)
- Boundary tests: tests/unit/boundaries.test.ts (4 tests) + scripts/check-boundaries.ts
- No feature code, no PWA/IDB/sync/mesh/accounts per contract Stage 1
This commit is contained in:
Lumen Stage1 2026-08-30 23:25:35 -05:00
commit c0bfd413ff
100 changed files with 9863 additions and 0 deletions

32
package.json Normal file
View file

@ -0,0 +1,32 @@
{
"name": "lumen",
"version": "0.1.0",
"private": true,
"description": "Lumen — offline-first festival PWA. Stage 1 foundation only; no feature code yet per IMPLEMENTATION-CONTRACT.md Stage 1.",
"type": "module",
"engines": {
"node": ">=22"
},
"scripts": {
"typecheck": "tsc --noEmit",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --check .",
"format:write": "prettier --write .",
"test": "vitest run",
"test:watch": "vitest",
"ci": "npm run typecheck && npm run lint && npm run format && npm run test"
},
"dependencies": {},
"devDependencies": {
"@types/node": "^22.13.5",
"eslint": "^9.22.0",
"@eslint/js": "^9.22.0",
"typescript": "^5.8.2",
"typescript-eslint": "^8.26.1",
"eslint-plugin-boundaries": "^5.0.1",
"globals": "^16.0.0",
"prettier": "^3.5.3",
"vitest": "^3.1.1"
}
}