Prototype · private repo · built 2026

EcoImpact — fix the world, see the proof.

A map of reported trash near you, plus a meter that quantifies how much you've actually fixed. Report a pin, clean it, log an eco action — watch kilograms of waste diverted and CO₂e avoided climb, with streaks and a leaderboard on top.

EcoImpact app — dark city trash map with cleanup pins, an impact meter, and a community leaderboard

The Problem

Litter apps map the mess. None of them close the loop.

Reporting apps already exist. What they don't give you is the payoff — a personal, quantified score that says what your cleanup was actually worth. Without that, a cleanup is a photo and nothing else, and there's no reason to come back tomorrow. The hook here is the meter, not the map.


What I Built

A full local MVP: report → clean → credit.

The map

Leaflet over OpenStreetMap, dark-treated to match the app. Tap anywhere to report trash with a category and note; the pin shows as open. Anyone can tap an open pin and mark it cleaned — it turns green and the impact is credited.

The meter

An animated "world fixed" ring totalling kg of waste diverted and kg CO₂e avoided, fed by sourced estimate factors (EPA waste averages, eGRID grid intensity, DOE water-heating figures) rather than made-up numbers. Streaks and a ranked leaderboard drive the return visit.

Daily actions, not just litter. Lights off, bike instead of drive, shorter shower, reusable bottle — each carries its own sourced impact factor, so engagement doesn't depend on finding trash that day.

How It Works

Four moves, one loop.

STEP 1

Report

Tap the map, pick a category, drop an open pin. Coordinates are rounded before they're stored.

STEP 2

Claim

Someone nearby taps the pin and marks it cleaned. The pin flips green; confetti fires.

STEP 3

Score

The backend applies the versioned impact factor and updates the world-fixed meter live.

STEP 4

Return

Streak endpoint, leaderboard rank, and daily eco actions keep the loop running between cleanups.


The Engineering Decision That Mattered

Privacy designed in at the schema, not bolted on later.

A map app collecting location from students is a liability if you get it wrong, so the constraints went in before the features.

No user GPS, ever

User locations are not stored at all. Report coordinates are rounded to roughly 11 metres, so a pin marks a spot without marking a person.

Report, don't touch

Hazardous categories — needles, chemicals — are report-only by design and route to city services instead of asking a volunteer to pick them up.

Estimates labelled as estimates

Impact factors are versioned and sourced in code, and shown as estimates. Never marketed as offsets or credits — that's a regulated claim.

Python FastAPI SQLite Leaflet OpenStreetMap Vanilla JS pytest GitHub Actions CI

Honest Status

Local MVP. Early.

What's real

The whole report → clean → impact loop works and is smoke-tested end-to-end, with a passing test suite running in CI. It runs on my machine on demand.

What isn't

Not deployed publicly, no users, no revenue. Photo verification, moderation, PostGIS geo queries and a mobile wrapper are all planned, not built — and public launch is gated on the moderation and minors questions being answered properly first.