Inspiration

When someone is hungry, sick or about to lose housing, the hardest part is often not the help itself but finding out it exists. Local resources are scattered across flyers, agency websites and word of mouth, and most listings don't answer the basics: is it open right now, how far is it, is it free, and will someone speak my language?

What it does

HelpNearby is a shared, searchable map of local community resources: food pantries, free clinics, counseling, shelters, tutoring, job help, legal aid and internet access.

  • Find what's close and open. Use your location or a ZIP code; results sort by distance, with "open now" computed live from each place's hours.
  • Map view with color-coded pins: green is open now, grey is closed.
  • Search in everyday words. "hungry", "rent" or "laptop" finds the right category.
  • Filters for free only, no appointment needed, and language spoken.
  • One tap to call, get directions, or save a place to "My list", plus a printable list for people without reliable internet.
  • Community suggestions, verified. Anyone can suggest a place they know. It is stored as pending and hidden from everyone else until a volunteer verifies it; approved places show a "Verified" date.
  • Crisis numbers (988, 211, 911) are always visible. Works on phones, supports dark mode, and is keyboard and screen-reader friendly.

Who it helps: students, families and anyone facing food, health, housing or money stress, plus the teachers, counselors and volunteers who help them find resources.

How we built it

The front end is a single page of HTML, CSS and vanilla JavaScript hosted on GitHub Pages, so it loads quickly on slow connections and old phones. Listings live in a shared Supabase (Postgres) database. Verification is enforced by the database itself with row-level security: the public key can only read approved listings and insert new pending ones, so nobody can approve their own submission from the browser. A database trigger stamps the verification date when a reviewer approves a listing. The map uses Leaflet with OpenStreetMap data, location comes from the browser's Geolocation API or a ZIP/address lookup through Nominatim, and distances use the haversine formula. If the database can't be reached, the app falls back to sample data instead of breaking.

Challenges we ran into

  • Trust: wrong information can send someone in crisis to a locked door, so every community suggestion must be verified before it goes public, and that rule is enforced in the database, not just the website.
  • Location accuracy: a bare ZIP code was sometimes matched to the wrong place, so ZIP codes now use a dedicated postal-code lookup, and the app always shows which location it used so people can correct it.
  • Map tiles: some free map providers block pages opened from a file or require keys, so the map tries several providers and falls back automatically.
  • Time: about two hours total, so we focused on the core flow (find a place that is open, close and free) and kept reviewing in the database dashboard instead of building a reviewer login.

Accomplishments that we're proud of

  • A working shared map where community knowledge can grow without sacrificing accuracy
  • Security rules tested so the public cannot approve, edit or delete listings
  • Designed for accessibility and low-bandwidth use from the start

What we learned

How row-level security lets a public website write to a database safely, how to compute distance and open/closed status from schedules, and how to cut a project down to its most useful core under time pressure. We also learned that tools for people under stress need plain language and clear confirmation (like showing which location was used).

What's next for HelpNearby

  • Load real, verified listings for our city from a 211 data feed or city open-data portal
  • An in-app reviewer page with volunteer logins
  • A "report outdated info" button on every listing
  • Spanish interface, then more languages

Planned or incomplete features

  • Listings marked "Sample" are fictional demo data. Hotline numbers 988, 211 and 911 are real.
  • Reviewing suggestions happens in the Supabase dashboard; there is no in-app reviewer page yet.
  • No submission rate limiting yet (basic spam protection only).

Tools, credits and AI assistance

  • Supabase (Postgres, row-level security) and supabase-js, Leaflet, OpenStreetMap data and tiles (with Esri and Humanitarian OSM as fallbacks), Nominatim geocoding, Google Maps direction links, GitHub Pages.
  • AI assistance: Claude (Anthropic) wrote most of the code, the database setup script, the README and a draft of this description. I chose the problem and the users it serves, decided the features (including requiring verification before community suggestions go public), set up and configured the Supabase database, tested the app and reported the bugs that were fixed (map view, ZIP accuracy, map tiles), verified the approval flow, and published the project.
Share this project:

Updates

Submission history