Inspiration
Food banks are essential in supporting low-income families, vulnerable communities, and disaster-affected populations by providing reliable access to food while also reducing waste through the redistribution of surplus supplies. However currently, food banks may lack coordination. This means that if certain foodbanks experience a shortage of food while the other experiences a surplus, the lack of information flow may lead to poor redistribution of food leading to waste.
What it does
Our project addresses this challenge by introducing a centralised digital platform that facilitates real-time communication and coordination between food banks, enabling surplus food to be efficiently redistributed to where it is needed most, reducing waste, improving responsiveness during emergencies, and ensuring more equitable access to food worldwide.
How we built it
Frontend: SvelteKit 2.0 + Svelte 4 with TypeScript, Vite, Tailwind CSS + Radix UI components Backend: Node.js with server-side load functions and form actions Database: SQLite3 with Knex.js query builder for migrations Maps: Leaflet.js + Marker Clustering (no API keys, free/open-source) Authentication: Session-based cookies with bcryptjs password hashing Geolocation: Nominatim API for UK postcode-to-coordinates geocoding; Haversine formula for distance calculations
Challenges we ran into
When trying to allow for real-time updates, we tried to use WebSockets. However, when implementing it, we encountered multiple issues, such as the page constantly refreshing, which ruined the user experience. However, we were able to resolve this issue through the use of a poll request when the database is updated.
Accomplishments that we're proud of
Scalable Multi-Sided Marketplace: Designed dual-view dashboard and deliveries pages that distinguish sender vs. receiver workflows within a single platform. UK-Specific Address Validation: Built custom Nominatim integration with strict UK postcode regex validation and lat/lon geocoding for search accuracy. Efficient Request Tracking: Multi-status pipeline (pending → accepted → sent → completed) with role-based visibility on dashboard/deliveries pages.
What's next for
Implement authentication for foodbanks to ensure that they are legitimate Create a chat between foodbanks when they organise a request between them
Built With
- javascript
- leaflet.js
- node.js
- svelte4
- sveltekit2
- typescript
- vite5
Log in or sign up for Devpost to join the conversation.