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

Share this project:

Updates