Lightweight, static app that renders category-based timelines with optional map and insights.
npm ci
npm run dev # serve at http://127.0.0.1:5511Build assets:
npm run build- Authoritative data rules:
src/data/schema.md - Schemas:
src/data/schema/*.json - Validate data:
npm run validate:data - Normalize and sort (writes fixes):
npm run normalize:data:write
Pre-commit runs validation automatically. CI also validates on push/PR.
npm run dev— local server on 127.0.0.1:5511npm run dev:any— bind 0.0.0.0 for LAN testingnpm run build— TypeScript + Tailwind buildnpm run validate:data— schema + logical checksnpm run normalize:data[:write]— auto-fix minor issues
src/— TypeScript and UI modulessrc/data/— categories and per-category eventsassets/— built CSS and iconsscripts/— data validator and normalizer
- IDs follow
category-YYYY[-MM[-DD]]-slug. Year in the ID must match theyearfield. - Keep events flat and concise; put extra details under
meta.
See CONTRIBUTING.md for setup, data rules, validation steps, and PR guidelines.