Civic cleanup map
Trash Mapper
A crowdsourced litter-reporting app for Austin with geotagged submissions, OpenAI vision validation, Supabase-backed accounts, and cleanup progress loops.
Problem
Why this mattered
Neighborhood cleanup work needs trustworthy location data. A simple open form can collect reports, but without validation it also collects irrelevant photos, duplicate noise, and reports that are hard to turn into action.
Build
What shipped
- An interactive map for browsing litter hotspots and submitted reports.
- A report flow with image upload, geolocation, severity, and cleaned-state updates.
- AI image validation that checks whether a submitted photo appears to show outdoor litter before accepting it.
- Supabase-backed authentication, Postgres persistence, and image storage.
- Image optimization with Sharp before storage, plus points for submitting and cleaning reports.
Stack
Tools and systems
Next.jsReactTypeScriptTailwind CSSNext.js API routesSupabasePostgresOpenAI visionSharpPigeon Maps
Decisions
Technical choices
- Validate report images before they become trusted map data.
- Keep cleanup status separate from report creation so the map can show both problem areas and resolved work.
- Use user stats and points to make repeated civic contributions visible.
- Optimize uploaded images server-side so map browsing stays lightweight.
Outcome
Proof surface
Public source and a deployed web surface make the project easy to inspect, run, and evaluate beyond a static screenshot.