🎨 Inspiration Urban citizens report potholes, blocked drains, and road hazards daily, but these reports get lost in complex bureaucratic queues. At the same time, municipal field teams lack a lightweight dashboard that links field reports with cloud-based office files. We built UrbanPulse to be a hyperlocal road hazard reporting and tracking tool that empowers citizens to upload street-level issues while organizing backend dispatch logs directly inside a Google Drive project workspace.
⚙️ How we built it Frontend: React 19, Vite, Tailwind CSS with dynamic dark/light mode support, and Lucide Icons. Backend: Node.js and Express backend proxying Gemini API requests. Database & Auth: Firebase authentication for secure estimator and worker logins. Integrations: Google Drive API integration to automatically sync local sandbox files and project folders. AI Analysis: Gemini 3.5 Flash to parse road hazard photos, estimate damage severity/percentages, and polish public citizen comments into clean, structured dispatch records. 🚧 Challenges we faced Google API Authentication: Handling OAuth2 flow and file permissions securely while maintaining an offline local sandbox folder for developers who don't have active credentials configured. Structured AI Outputs: Crafting exact prompt guidelines to guarantee Gemini returned clean JSON objects without markdown wrappers, which would otherwise break the parsing layer. Dynamic Mapping: Synchronizing coordinates from reported hazard pins with custom Map templates and dashboard charts in real-time. 📚 What we learned File Stream Handling: Managing raw binary blobs and file buffers from Google Drive in a React app requires clear async state management and skeleton loading UI. AI Data Cleansing: Using LLMs to clean up messy user-reported text (e.g., stripping commas to prevent CSV corruption and limiting to strict character counts) makes crowdsourced data significantly more database-ready.
Built With
- and
- and-framer-motion-for-premium-micro-animations.-backend:-node.js-and-express-serving-as-a-secure-api-gateway-proxy-to-shield-api-keys.-ai-engine:-the-@google/genai-sdk-using-gemini-3.5-flash-for-high-speed-structured-analysis-and-schema-adherence
- automatic
- bids
- cache
- configurations
- fallback
- frontend:-react-19
- gemini-3.1-flash-lite.
- indexeddb
- local
- localstorage
- management:
- outbound
- queue
- recharts-for-vendor-score-visualization
- rfis
- state
- tailwind-css-for-styling
- to
- vite
- when
- with
Log in or sign up for Devpost to join the conversation.