CivicSpot
A civic issue-reporting platform that lets citizens report and track city problems, with AI-verified photo evidence so reports can be trusted at a glance.
The project, quickly
Solo full-stack developer - design, frontend, backend, and deployment.
React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui, and Radix UI on the frontend.
Supabase for Postgres, authentication, real-time subscriptions, and edge functions.
Live and deployed on Vercel, with the database and edge functions on Supabase.
The problem
Cities rely on citizens to flag problems like road damage, broken lighting, sanitation issues, and graffiti - but most reporting channels are slow, hard to verify, and easy to spam. A city can't act on a report if it can't trust the photo actually shows the issue described.
I wanted to build something that solved both sides of that problem at once: make it effortless for a citizen to report an issue from their phone, and give city administrators a way to trust and triage what comes in without manually checking every submission.
How it works
AI photo verification
Every uploaded photo is checked against the reported issue category using the Google Vision API, so a "pothole" report can't be filed with an unrelated photo.
Interactive maps
Reports are geolocated automatically or placed manually, then plotted on an interactive Google Maps view so patterns across a city are visible at a glance.
Admin dashboard
Administrators triage reports by category, status, location, and date, update priority, and track resolution progress from a single dashboard.
Auth & live updates
Supabase handles email-verified authentication and real-time subscriptions, so a citizen sees their report's status change the moment an admin updates it.
Tech stack
What I'd improve next
The Vision API check currently confirms a photo is plausible for the issue category, but it can't yet judge severity - a hairline crack and a collapsed road both pass the same check. Adding a severity score would let admins triage by urgency instead of just category and date.
I'd also like to add offline-first report drafting, since the areas most likely to have civic issues (poor road conditions, damaged infrastructure) often have the weakest connectivity too.