Spaces:
Sleeping
Sleeping
metadata
title: PotholeIQ
emoji: π£οΈ
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false
PotholeIQ β Pothole Management on the Box Platform
One workflow from citizen intake to verified repair: AI photo classification (YOLOv8), severity scoring, GIS mapping, supervisor review, crew dispatch, digital closeout, and an auditable before/after report β with Box as the content system of record and Supabase as the data mirror.
Pages
| Page | Purpose |
|---|---|
/index.html |
Citizen submission portal (photo + GPS, AI classification) |
/command-center.html |
Supervisor Command Center (KPIs, map, approve/dispatch/resolve) |
/crew-closeout.html?case=ID |
Standalone crew closeout form (locked to one case) |
/case-report.html?case=ID |
Printable before/after report |
/track.html |
Citizen case tracking |
Configuration (Space secrets β env vars)
Box (required)
| Secret | Example / note |
|---|---|
BOX_AUTH_MODE |
client_credentials |
BOX_CLIENT_ID |
Box app client id |
BOX_CLIENT_SECRET |
Box app client secret |
BOX_SUBJECT_TYPE |
enterprise |
BOX_SUBJECT_ID |
Box enterprise id |
BOX_INTAKE_FOLDER_ID |
Intake folder id |
BOX_CASE_ROOT_FOLDER_ID |
Case root folder id (often same as intake) |
BOX_METADATA_SCOPE |
enterprise |
BOX_METADATA_TEMPLATE_KEY |
potholeCase |
Supabase (recommended β data mirror + supervisor login)
| Secret | Note |
|---|---|
SUPABASE_URL |
https://<ref>.supabase.co |
SUPABASE_SECRET_KEY |
service-role key (server-side only) |
DASHBOARD_AUTH |
true to require supervisor login on dashboard APIs |
Optional
| Secret | Note |
|---|---|
CLOSEOUT_NOTIFY_RECIPIENTS |
Comma-separated default recipients for before/after reports |
BOX_AUTOMATE_SECRET |
Shared secret for Box Automate β /api/box/automate-update |
DATA_DIR |
Set to /data/potholeiq if HF persistent storage is enabled |
BOX_CASES_TTL_MS |
Box case-list cache TTL (default 45000) |
Architecture notes
- Box = source of truth for content: photos, sidecars, generated documents,
before/after PDFs (in
Closeout Reports), metadata (potholeCasetemplate). - Supabase = data mirror (
db/schema.sql, run once in the Supabase SQL editor). - The local
data/store is a working cache only β safe to lose on restarts. - First AI classification after a cold start takes ~30β60 s (model load).