Neighbor Needs — Devpost Submission

Inspiration

When a wildfire, flood, or earthquake hits, the first 72 hours are the most critical — and official emergency services are almost always overwhelmed. We kept asking ourselves: what if your neighbor has a generator, medical training, or a spare room, but you just don't know? That question became Neighbor Needs. We wanted to make the invisible safety net of a neighborhood visible, without compromising the privacy that makes people willing to share in the first place.

What it does

Neighbor Needs is a neighborhood disaster resilience skills map. Residents register their:

  • Skills — medical, construction, mechanical, language interpretation, etc.
  • Equipment — generators, chainsaws, first aid kits, water purification
  • Shelter capacity — spare rooms, accessible spaces

In normal mode, neighbor locations are anonymized and contact info is hidden. When an emergency is declared, the map activates within an affected radius: pins turn red, contact information becomes visible to nearby neighbors, and help requests begin flowing — turning a passive directory into a real-time mutual aid network.

How we built it

Frontend

We built a React + TypeScript frontend with TailwindCSS v4 for styling and a set of shadcn-style UI primitives backed by Radix UI. The map uses CSS-based lat/lng positioning to simulate neighbor proximity:

offsetX = (lng − center.lng) × 400
offsetY = (lat − center.lat) × 400

Backend

We built a Go backend using Gin for routing and pgx/v5 for PostgreSQL connections. Authentication uses JWT access tokens (15min TTL) with device-bound refresh token rotation, and passwords are hashed with bcrypt. The database uses PostGIS for geospatial queries-ST_DWithin powers the proximity search that finds neighbors within a configurable radius. Configuration is managed via Viper from a YAML file, and structured logging uses Zap. The service layer pattern collapses handlers and business logic into single-file services for auth, user profiles, discovery, and emergency coordination.

Mobile Apps

We built a SvelteKit + TypeScript mobile app with TailwindCSS v4 and shadcn-svelte components, wrapped in a Tauri 2 shell for cross-platform native deployment. The map uses Leaflet with OpenStreetMap tiles for neighbor visualization, and Lucide icons provide UI iconography. The static adapter builds a self-contained bundle that Tauri serves from its local webview, enabling offline-first operation. Tauri commands expose native system capabilities like desktop notifications for emergency alerts, while the Rust backend handles platform-specific integrations. The mobile prototype mirrors the web frontend's data model with mocked responses in the Svelte pages.

Challenges we ran into

The hardest problem was the privacy-utility tradeoff. Showing too much by default erodes the trust needed for adoption. Showing too little during an emergency costs lives. We landed on a two-mode system where privacy escalation — revealing phone numbers and precise coordinates — is:

  1. Gated behind an explicit emergency declaration
  2. Scoped to a geographic radius, not broadcast globally
  3. Designed to move fully server-side in production, so the frontend never receives data it shouldn't render

We also had to think carefully about abuse vectors: a fake emergency declaration, or a bad actor registering false skills. These informed our "What's next" roadmap around verified registration.

Accomplishments that we're proud of

The emergency mode UX. A single toggle transforms the entire interface — banner color, pin states, sidebar content, and contact visibility — so the shift from normal to crisis feels immediate and unambiguous. We're also proud of designing a privacy model that doesn't treat safety and discretion as opposites. End-to-end encryption for communication between the client and server was also a big accomplishment.

What we learned

Hyperlocal tools need to earn trust before they need to earn adoption.

The constraints we almost removed — anonymizing by default, scoping visibility by radius — turned out to be the most important features. We also learned that geospatial privacy is genuinely hard: even anonymized pin clusters can reveal home locations if the anonymization radius is too small.

What's next for Neighbor Needs

  • Verified registration via SMS or community vouching to prevent misuse
  • Server-side privacy escalation so precise location data never leaves the backend until an emergency is active
  • Offline-first mode via the Tauri shell, so the app works when cell networks are congested
  • Pilot program with a real neighborhood association or CERT team

Built With

Share this project:

Updates