Inspiration
We noticed how hard it can be for residents to report local issues—like potholes, graffiti, or overflowing trash—quickly and with enough detail for city crews to act. Most systems require phone calls or complicated forms. We wanted something simple, mobile-friendly, and visual.
What it does
FixiePixie lets a user snap a photo, automatically captures GPS coordinates, and instantly sends a formatted email (with image attached) to the correct city department. The recipient receives clear location info, maps links, and a photo for verification.
How we built it
- Front end: React + Vite. We used the
navigator.geolocationandnavigator.mediaDevices.getUserMediaAPIs to capture location and camera input inside the browser, then previewed images on a<video>/<canvas>pipeline. - Back end: Node.js + Express + Multer for multipart uploads. We reverse-geocode coordinates with OpenStreetMap’s Nominatim API to determine city and ZIP, then route the report to the proper address from a local JSON file.
- Email delivery: Nodemailer + Gmail SMTP with App Passwords to attach the photo and send a formatted HTML message to the authority automatically.
- Styling: Custom CSS theme for high contrast, responsive layout, and friendly buttons.
Challenges we ran into
- Getting camera + GPS permissions to work reliably on mobile (solved with
playsInlineandmutedattributes and HTTPS context). - Ensuring reverse-geocoding stayed within Nominatim usage policies.
- Handling multipart uploads and email attachments without saving files on disk.
- Making the UI accessible and legible in both light and dark modes.
Accomplishments that we're proud of
- A complete working MVP in just a short timeframe.
- Fully functional email pipeline with photo attachments.
- High-contrast, mobile-friendly UI with minimal user friction.
What we learned
- How to integrate browser APIs (camera, GPS) with React hooks.
- Securely sending emails via Gmail’s SMTP with App Passwords.
- Designing a simple UX for a civic-tech problem.
What's next
- Add authentication and history for residents to track their reports.
- Build a city-side dashboard to manage incoming issues.
- Support push notifications and SMS confirmations.
Built With
- ai
- api
- custom
- express.js
- gmail
- multer
- mysql
- node.js
- nodemailer
- nominatim
- react
- smtp
- tailwindcss
- vite

Log in or sign up for Devpost to join the conversation.