Overview of the dashboard, data flow, Firestore schema, caching, and UI behaviors for the Resparke Analytics web app.
auth-guard.js enforces email/password auth (no anonymous). Non-authenticated users are redirected to login.html.firebaseInitialized after login; pages consume window.firestoreDb.adminLogout() signs out and redirects to login.html.main.js bootstraps the dashboard: sets up events, initializes date range, fetches data, renders UI.firestore.js fetches facilities and date-ranged daily engagement; processes into state.ui-render.js renders cards/list, stats, charts; uses memoized facility metrics.events.js wires filters (search, date, sort, engagement, units, view mode) and refreshes data/render.facility-details.js handles facility detail fetch, charts, and per-facility date range; fills missing dates with zeroes.| Field | Type | Notes |
|---|---|---|
| name | string | Facility display name |
| facilityId | string | External ID (used in queries/links) |
| network | string | Optional grouping |
| status | string | active | inactive |
| createdAt / updatedAt | timestamp | Set on create/update |
| Field | Type | Notes |
|---|---|---|
| facilityId | string | Matches facilities.facilityId |
| date | string (YYYY-MM-DD) | Partition key for daily rollups |
| videoDurationS | number | Seconds |
| musicDurationS | number | Seconds |
| slideshowDurationS | number | Seconds |
From DAILY_DATA_COLLECTION (configured in config.js): date-range query used for dashboard totals and facility cards/list.
firestore.js.globalDateFrom/To).?from=YYYY-MM-DD&to=YYYY-MM-DD, fills missing dates with zero rows for charts.facilities collection.login.html.index.htmlfacilities.htmlfacility.htmllogin.htmlCSS/styles.cssmain.js, events.js, filters.js, ui-render.jsfirestore.js, data-utils.js, state.jsfacility-details.js, facility-analytics.jscalculations.js, charts.js, analytics.jsconfig.jsauth-guard.js