A mobile-first, one-day conference guide for the Hawaiʻi State Department of Education's AI in Education Summit 2026 on Thursday, July 9, 2026, at Hilton Hawaiian Village (Waikiki).
The official public Sched source is now captured and promoted into the runtime: 56 agenda items, 48 presenter profiles, and 6 published categories. The dataset is verified against all public event and presenter pages in the saved capture. The July 1 refresh adds published room assignments for the breakout sessions. The interface now uses the official summit banner, square icon, and the six category colors published by Sched.
- Accessible Agenda / People / My day tab navigation
- Honest loading, zero-result, and missing-field states
- Agenda search across sessions, descriptions, tracks, presenters, and rooms
- Multi-track filters
- Session details, favorites, private session notes, and quick notes
- Speaker search that also matches their session titles
- Versioned device-local storage
- JSON backup export and validated import using the same data envelope
- Specific-session hash links such as
#session=<stable-id> - Offline app shell through a service worker
- Installable web-app manifest
- Read-only data, storage round-trip, and static regression checks
No account, analytics, cookies, API, or backend is used. Picks and notes remain in the attendee's current browser until they export them or clear site data.
npm run serveOpen http://127.0.0.1:4173/.
No package installation is required. The scripts use only Node's built-in APIs, and the local server uses Python's standard library.
npm testThe check is read-only. It validates JavaScript syntax, the canonical data model, storage export/import round-tripping, accessibility-critical shell markup, PWA assets, reduced-motion support, and static runtime hooks.
index.html semantic app shell
styles.css working visual system and responsive UI
app.js tabs, search, rendering, favorites, notes, sharing
storage.js versioned local persistence and normalization
data/event.js hand-maintained event configuration
data/generated/conference-data.js generated schedule and presenter data
scraped/ raw and normalized official source snapshots
scripts/update-generated-data.mjs normalized JSON → runtime module
scripts/build-pages.mjs minimal static release → dist/
scripts/check-live-source.mjs live Sched drift check (read-only)
scripts/fetch-sched.mjs public Sched pages → raw source snapshot
scripts/extract-sched.mjs raw Sched snapshot → normalized JSON
scripts/validate-data.mjs schema and referential-integrity checks
scripts/audit-content.mjs capture, content, and relationship audit
scripts/storage-roundtrip.mjs export/import regression check
scripts/static-smoke.mjs static shell and PWA checks
docs/ architecture, source audit, and data contract
sw.js offline shell cache
manifest.webmanifest install metadata
.github/workflows/deploy-pages.yml GitHub Pages release workflow
- Run
npm run data:check-live. This compares current event routes, speaker routes, calendar IDs, and event facts without changing local files. Usenpm run data:check-live -- --deepto also compare the attendee-facing content of every event and presenter page. - If drift is reported and a new capture is wanted, preserve or archive the
existing dated snapshot before running
npm run data:fetch. - Run
npm run data:extractto rebuildscraped/official.normalized.jsonusing the contract in docs/data-contract.md. - Update verified event facts and tracks in
data/event.js. - Run
npm run data:build, thennpm test. - Browser-check 390px, 768px, and desktop widths, including offline reload.
- Update the service-worker cache name before publishing changed cached assets.
The generation step is separate from tests so npm test never mutates production
data. Missing facts remain null; the UI suppresses them rather than presenting
placeholder strings as finished content.
scraped/review.json binds verified status to one exact capture timestamp. A new
capture automatically returns to draft until the deep live comparison and audit
are rerun and the review marker is updated.
Current review details and explicit source gaps are in docs/content-audit.md.
The current register is product UI: a conference check-in desk crossed with a campus field guide. The official Sched banner and icon provide the summit's navy, blue, cyan, and yellow base. Track controls use the six official category colors. The event-specific asset source and usage notes live in assets/brand/README.md.
Typography uses Sora and Source Serif 4 when online, with system/Georgia fallbacks offline. The app remains functional offline, but the Google-hosted font files are not part of the local cache.
Build the deployable site with:
npm run buildThis creates dist/ with only the attendee-facing runtime and assets; raw Sched
captures, source adapters, and internal docs stay out of the public artifact. All
runtime URLs are relative so the app works at the GitHub Pages project path.
Pushes to main run the pinned GitHub Pages workflow in
.github/workflows/deploy-pages.yml. The public app is live at:
https://lpcode808.github.io/HIDOE-AI-26-app/
Source and deployment history live at https://github.com/lpcode808/HIDOE-AI-26-app. Deployment details and recovery steps are documented in docs/deployment.md.
No open-source license is granted by this repository. Official event copy and artwork remain attributable to their source owners; source URLs and capture provenance are retained in the repository.