Inspiration Rural communities live with service gaps — shuttered pharmacies, failing water systems, washed-out roads, dead-zone broadband — that never make it onto any official map. The reporting tools that exist assume smartphones, connectivity, and trust in institutions. We were inspired by a simple flip: what if the people living the gaps were the ones mapping them, anonymously and safely? The countryside has a signal. Nobody was listening.

What it does NeedMap is a two-part system:

Community site — a lightweight, anonymous reporting form. Residents pick a category (healthcare, water, transport, emergency response, food, broadband), set an urgency level, and drop a location that's automatically rounded to a ~500m grid. No names, no accounts, no personal data — the form actively rejects phone numbers, emails, and street addresses. Dashboard — turns those anonymous signals into aggregated, privacy-first insights for local organizations: where reports cluster, what's urgent, what needs review. Designed to show patterns, not people. Every report is framed honestly: these are possible areas for review, not confirmed gaps. Trust is the product.

How we built it: Intake: vanilla HTML/CSS/JS with zero build step (so it loads fast on poor connections), Firebase Anonymous Auth, and Firestore. The form writes to an incomingSignals collection with grid-rounded coordinates and server timestamps. Privacy engineering: geolocation is snapped to a 500m grid before it ever leaves the device; client-side pattern matching blocks PII in free text; an emergency banner routes urgent cases to local emergency numbers instead. Dashboard: Vite + React + TypeScript, built around the "patterns, not people" narrative — aggregate zones instead of household markers, human validation before any conclusion. Hygiene: we caught and removed an 82MB committed node_modules, added a proper .gitignore, and wrote real docs. Challenges we ran into Privacy vs. precision was the core tension: responders want exact locations, reporters need safety. The 500m grid was our compromise — useful for clustering, useless for identifying anyone. Designing for the actual user: rural, possibly low-connectivity, possibly low-literacy. That killed every heavy-framework instinct and forced the no-build, plain-language form. Trust without identity: anonymous auth means no accounts to abuse, but also no reputation. We leaned into honest framing instead of overclaiming what the data proves. Team coordination: two repos, a submodule, and a Firebase project across teammates — consolidation into one final repo was a project in itself. Accomplishments that we're proud of A working anonymous intake pipeline, end to end: form → Firebase Auth → Firestore, with privacy guarantees baked in, not bolted on. Location privacy done right — grid rounding before submission, not after. PII-blocking that actually works client-side, with clear user feedback. A dashboard narrative judges remember: "Patterns, not people." A full 13-slide pitch deck and a clean, documented repo. What we learned Privacy isn't a compliance checkbox — it's an architecture decision that shapes every layer, from coordinate rounding to copy writing. Constraints are a gift: the no-build, lightweight requirement produced a better product for the actual users than any framework would have. Honest framing ("possible areas for review") builds more credibility than confident overclaiming — especially with judges and especially with communities. Firebase's anonymous auth is an underrated superpower for sensitive civic intake. What's next for RuralGrid: Live dashboard wiring: real-time aggregate heatmaps reading directly from the incomingSignals collection. AI clustering & urgency scoring: group related signals, surface emerging hotspots, rank by severity × community impact. Voice hotline: an AI phone line for residents without smartphones — prototyped already, next to integrate. Verification loop: outbound check-ins that confirm or reopen reports, so the map stays honest. Pilot + hardening: Firestore security rules audit, then a pilot with a real local organization. Placement recommendations: from "where it hurts" to "where to build next" — the full loop from signal to action.

Built With

Share this project:

Updates

Submission history