Inspiration
We wanted a beach cleanup tool that works where trash happens: on the sand, offline, with no login or server needed. The goal was to make cleanup data capture easy and private using just a phone.
What it does
Plastic Patrol lets you log trash pickups on a map, auto-classify common items with on-device AI, and visualize hot spots and stats locally. It caches everything in the browser so the app still works offline.
How we built it
Built as a PWA with Vite, React, TypeScript, Tailwind, Leaflet and IndexedDB. TF.js + COCO-SSD runs in the browser, and all data lives client-side so there’s no backend, auth, or API keys required.
Challenges we ran into
The main challenge was making a real cleanup tool without a server: offline storage, geolocation fallback, lazy-loading the ML model, and keeping the UI usable on phone-sized screens.
Accomplishments that we're proud of
We shipped a fully client-only experience with a working map, leaderboard-style heatmap, offline mode, and browser AI classification. It also boots quickly and can run in airplane mode at the beach.
What we learned
A strong cleanup app can exist without cloud infrastructure. Browser-native storage, PWAs, and lazy-loaded ML are enough to build a useful, privacy-first experience.
What's next for Plastic Patrol
Add a custom beach trash model, bridge patrols to cleanup orgs, and offer optional community sync or shareable cleanup summaries while keeping the core app serverless.
Built With
- css3
- html5
- indexeddb
- leaflet.js
- openstreetmap
- pwa
- react
- tensorflow
- typescript
Log in or sign up for Devpost to join the conversation.