Inspiration

Campus events often end with safe, unserved food that may go to waste simply because nearby students do not hear about it in time. Existing redistribution efforts can depend on fast-moving chat messages, where announcements become buried and the remaining stock is unclear.

We asked: what if surplus food appeared like a time-sensitive meteorite drop that students could discover, collect, and verify before it became waste?

That idea became PorsiPas: Catch the drop. Save the meal.

What it does

PorsiPas is a standalone campus food-rescue app where anyone can act as both a host and a rescuer.

Hosts can:

  • Publish a FoodDrop with a photo, number of portions, pickup instructions, deadline, dietary information, and allergens.
  • Display a private pickup QR code.
  • Monitor live remaining stock.
  • Update, extend, cancel, or close their FoodDrops.

Rescuers can:

  • Discover active FoodDrops through a distance-sorted list or meteor map.
  • View live stock, pickup details, deadlines, dietary information, and allergens.
  • Scan the host's QR code at the pickup point to verify one collection.
  • Build a verified rescue history and progress through weekly missions, streaks, PorsiPal ranks, and badges.
  • Choose a foreground watch radius and optionally share a privacy-safe rescue message.

The backend confirms each collection and decreases stock atomically. Duplicate, expired, cancelled, depleted, and invalid collections are rejected without awarding another rescue.

How we built it

We built PorsiPas as an Android-first mobile application using React Native, Expo SDK 54, Expo Router, and TypeScript.

Supabase provides:

  • Anonymous authentication, so no demo password is required.
  • PostgreSQL for FoodDrops, users, collections, and progression data.
  • Storage for FoodDrop photos.
  • Realtime data for live stock and listing updates.
  • Row Level Security for data access control.
  • Atomic database functions for QR verification and stock reduction.

Expo Camera handles physical QR scanning, Expo Image Picker handles FoodDrop photographs, and Expo Location provides foreground-only distance sorting and watch-zone selection. We also use React Native Maps for discovery and the native share sheet for optional privacy-safe sharing.

The mobile interface never decides that a rescue succeeded by itself. Points, stock, history, missions, and celebrations update only after Supabase returns a verified result.

Challenges we ran into

One of our biggest challenges was making the rescue trustworthy under real mobile conditions. Two people could attempt to collect the final portion at almost the same time, so the database—not the interface—had to become the source of truth.

We also had to:

  • Keep the private QR payload separate from public FoodDrop information.
  • Prevent duplicate and invalid collections.
  • Handle expired, cancelled, and depleted listings clearly.
  • Coordinate camera, photo, notification, and location permissions.
  • Manage changing stock and realtime refreshes across two physical phones.
  • Recover clearly from network and Expo tunnel interruptions.
  • Add gamification without rewarding clicks that did not represent a real rescue.

Because four teammates worked in parallel, we also learned to use Git branches, pull requests, handoff documents, and a shared integration contract to combine each phase safely.

Accomplishments that we're proud of

We completed and physically tested the full two-phone rescue flow:

  1. A host publishes surplus food and displays its QR code.
  2. A second user discovers the FoodDrop and travels to the pickup point.
  3. The rescuer scans the physical QR.
  4. Supabase verifies one collection and decreases stock exactly once.
  5. Both phones converge on the authoritative remaining stock.
  6. The verified rescue updates history, points, missions, streaks, ranks, and badges.

We are especially proud that PorsiPas combines a serious sustainability workflow with a playful identity. FoodDrops appear as meteorites, while PorsiPal celebrates genuine rescues and turns repeated participation into a cosmic journey.

We also built privacy-conscious location controls, clear terminal states, optional native sharing, and a 30-second product tour for new users and judges.

What we learned

We learned that food rescue requires more than displaying available meals. Timing, live stock, trust, pickup verification, food information, and failure recovery are all essential.

We also learned that gamification works best when it follows a meaningful action. PorsiPas never awards progress merely for viewing a FoodDrop or intending to collect it. The reward appears only after a real, server-verified rescue.

Finally, we learned to be careful with sustainability claims. PorsiPas reports verified portions rescued. We do not convert those portions into kilograms, carbon emissions, money, or nutritional estimates without reliable supporting data.

What's next for PorsiPas

Our next step would be a controlled campus pilot with clubs, caterers, residences, cafeterias, and event organisers.

Future improvements could include:

  • Verified host profiles and community ratings.
  • Stronger moderation and food-safety workflows.
  • Production closed-app push notifications.
  • Recurring FoodDrops for regular partners.
  • Institution dashboards based on verified rescued portions.
  • Integrations with campus dining and event-management systems.
  • Evidence-based waste and environmental reporting where reliable measurement data is available.

Ultimately, we want PorsiPas to make rescuing surplus food immediate, trustworthy, and delightful enough to become a normal part of campus life.

Built With

Share this project:

Updates

Submission history