Inspiration

Once, my friend was running a tech panel at Cornell and texted me frantically asking if I wanted free boba. I was confused at first, but turns out she'd ordered way too much and couldn't give it all away before the event ended. She was literally about to throw it out if no one took it. I rushed over and grabbed it, but it made me think: what about all the events I don't know about?

Every day on college campuses, clubs order surplus food for events, meetings run long and pizza gets left behind, and perfectly good meals end up in the trash. Meanwhile, students are struggling with food costs. The disconnect is wild - one group has too much, another doesn't have enough, and there's no easy way to connect them.

Stanford alone probably wastes hundreds of meals a week. Scale that nationally, and we're talking about enough food waste to feed entire communities. If even a small app like this can redirect some of that, then job well done.

What it does

RePlate is stupid simple: if you have extra food from an event, you fill out the details on RePlate, set an expiry time, and post it. Other students see it in real-time, claim it, and come pick it up. There's a 15-minute claim window so people can't just hoard posts, and once it's picked up, both people build reputation in the system.

No complicated messaging, no dealing with flaky people - just "I have food" → "I'll grab it" → done.

How I built it

Started with the core loop: post food, claim food, mark as picked up. Built that flow first in React with Firebase handling auth and the real-time database, then layered on the map using Leaflet + OpenStreetMap (because Google Maps costs money and I'm kinda broke).

Firebase made sense because I needed real-time updates without building a whole backend, and Firestore's snapshot listeners are perfect for the live feed. Spent way too long getting the auto-cleanup working - posts that expire get deleted automatically, unclaimed posts after 15 mins get released back to "available."

Challenges I ran into

Real-time updates were surprisingly hard. Making sure the feed stayed in sync across multiple users, handling race conditions when two people claim the same post at once, and getting the auto-cleanup timers to work reliably - Firebase is powerful but there's a learning curve.

Also my first time really diving deep into Firebase, so figuring out security rules, query optimization, and managing state between Firestore and React took some trial and error.

Time crunch: Almost didn't finish the impact dashboard and reputation system. The confetti celebration on pickup? Added that at like 3am because the app felt too serious and needed some joy.

Accomplishments that I'm proud of

I shipped a working product in under 36 hours. Solo. The real-time feed actually updates instantly, the map works, the claim/pickup flow is smooth, and the auto-cleanup runs without me babysitting it. That's wild for a weekend project.

It actually solves the problem. This isn't some hypothetical "wouldn't it be cool if..." - I've watched food get wasted, I've scrambled to grab leftovers, and this app would've saved my friend from throwing out 40 bobas. If this existed at Stanford, I'd genuinely use it.

Also proud of the confetti when you pick up food. Small thing, but it makes the sustainability message feel celebratory instead of preachy.

What I learned

Firebase is actually sick for rapid prototyping. I'd never used it before, but getting real-time updates working without building an entire backend saved me hours. Firestore's snapshot listeners are magic - write data, UI updates everywhere instantly.

Time-boxing features is crucial. Every feature sounds cool until you realize you have 12 hours left. I cut the entire group chat feature and just went with phone number exchange. Simpler, faster, shipped.

Real-time systems are harder than they look. Race conditions, optimistic UI updates, handling offline mode - there's so much hidden complexity in making things feel instant and reliable.

Also learned that food waste is genuinely massive. Like, Stanford probably throws out thousands of pounds of food every semester. Even small fixes matter.

What's next for RePlate

Short-term: Actually test this with Stanford students. Get 20 people to post food over a week and see if it actually gets claimed. Real usage will break everything I didn't think of.

If people use it: Push notifications when food appears nearby, calendar integration so clubs can auto-post surplus when events end, and maybe partner with Stanford Dining to redistribute extra meals at closing time instead of tossing them.

Dream scenario: Other schools want it. Fork it, rebrand it, let it spread. The code's not rocket science - any campus could run this.

But honestly, if this helps even one person get a free meal that would've been wasted, I'm calling it a success. The goal was to ship something real, not just a slideshow. Mission accomplished.

Built With

Share this project:

Updates