Inspiration Food insecurity is often treated like a simple “find a food bank” problem, but in real life people need support that fits their situation: distance, hours, ID requirements, dietary needs, family needs, student needs, and whether help is available today. We wanted to build something that feels practical in a stressful moment and helps people find nearby food support without digging through scattered websites.

What it does Community Pantry helps users find nearby food banks, meal programs, community fridges, and family support across Canada. A user can enter an address, postal code, or use browser location, then the app calculates the closest food support options and shows the top 5 matches, with the option to view the closest 30.

Users can also describe their situation in plain language, such as “I need halal groceries today and I do not have ID.” The app detects needs like groceries, hot meals, urgent support, no ID, halal, vegetarian, delivery, student, family, newcomer, and baby supplies, then uses those needs to improve ranking. It includes an interactive map, route display, open-now status, contact details, Google Maps directions, requirements, and service information.

How we built it We built the frontend with React, TypeScript, Vite, Leaflet, and OpenStreetMap. Address search uses Canadian geocoding logic with local fallbacks for reliability. Resource ranking uses Haversine distance calculations, service hours, and need matching to sort nearby supports.

The app combines a verified Canadian seed directory with live OpenStreetMap results near the user’s location. For IBM technology, we added an optional IBM Granite integration through Ollama: when available locally, IBM Granite extracts structured needs from the situation text, and the app falls back to built-in matching if Granite is not running.

Challenges we ran into The biggest challenge was making the location search feel real and reliable. Public geocoding and live map APIs can be rate-limited or inconsistent, so we had to add fallback logic and verified seed data to keep the app useful during demos.

Another challenge was balancing relevance and distance. Early ranking could recommend a slightly “better match” far away, which did not make sense for someone trying to get food support quickly. We adjusted the ranking so distance is the main driver while still respecting needs and open-now status.

IBM Cloud access also became difficult because account setup required billing, so we pivoted to IBM Granite as a no-billing IBM technology path.

Accomplishments that we're proud of We are proud that the app became more than a static list. It supports real address input, map-based discovery, nearest-resource ranking, contact details, directions, service hours, and situation-aware matching.

We are also proud that we designed the system to fail gracefully. If live map data or IBM Granite is unavailable, the app still works using verified data and built-in parsing. That makes the project much more demo-safe and useful.

What we learned We learned that food support discovery is not only a data problem. It is also a trust, accessibility, and urgency problem. A useful tool needs to answer practical questions quickly: What is closest? Is it open? Can I contact them? Do I need ID? Can they support my specific situation?

We also learned how important fallback systems are when building with public APIs, geocoding, maps, and AI services. A strong hackathon project needs to keep working even when one service is slow, blocked, or unavailable.

What's next for Project Next, we would connect Community Pantry to a larger verified food support database, such as 211, municipal open data, nonprofit directories, or Food Banks Canada partner data. We would also improve live provider updates, add transit and walking directions, support multiple languages, and include accessibility-focused filters.

For IBM, the next step would be deploying the Granite/watsonx need-extraction layer through a secure backend so it works for everyone on the public website, not only on a local demo machine.

Built With

Share this project:

Updates