Inspiration

In Hennepin and Ramsey counties alone, over 200,000 people experience food insecurity. Many live within miles of a food bank but have no reliable way to get there — seniors, people with disabilities, families without cars. Meanwhile, thousands of community members have cars and time they'd happily donate. The food is there. The volunteers are there. CarryOn was built to connect them.

What it does

CarryOn is a two-sided web platform matching food bank recipients with volunteer drivers across the Twin Cities. Recipients browse 24+ food bank locations on an interactive map, filter by offerings, and schedule one-time or recurring deliveries. Drivers view open requests near them, accept deliveries, and log volunteer hours — all through role-based dashboards that adapt to each user type.

How we built it

We used Cursor & Claude for AI-assisted development and prompting, built on a modern stack: Next.js 16 (App Router), TypeScript, React 19, Tailwind CSS 4, Firebase (Auth + Firestore), Mapbox GL for the interactive map, and Resend for email notifications — deployed on Vercel.

Challenges we ran into

Real-time data coordination across users required careful Firestore listener management. Keeping 24+ map markers performant with live status filtering on mobile was tricky. Designing one app that feels purpose-built for two very different user types without a confusing interface took significant iteration. Calendar integration across Google, Outlook, and .ics formats added unexpected edge cases.

Accomplishments that we're proud of

A fully functional end-to-end delivery workflow — from food bank discovery through driver matching, delivery tracking, and completion. An interactive map with live open/closed status indicators. Recurring delivery scheduling with calendar integration. A volunteer hours tracking system. And a partnership with the University of St. Thomas Business 200 program, onboarding 200 student volunteer drivers from day one.

What we learned

Designing for accessibility is harder than designing for power users — every extra step is a barrier for someone who genuinely needs this service. Firebase real-time listeners are powerful but require careful lifecycle management. AI-assisted development with Cursor and Claude dramatically accelerated iteration speed. And food insecurity is a logistics problem as much as a supply problem — the last mile is where the system breaks down.

What's next for CarryOn

SMS notifications for delivery updates, driver verification and background check integration, and route optimization for multi-stop pickups. Longer term: a native mobile app, an expansion toolkit for other cities to launch their own CarryOn instance, and broader partnerships with universities, churches, and community organizations.

Built With

Share this project:

Updates