Yashmit Katekar
← All projects
Web·Still cooking

AnnaDaan

A food donation app connecting donors and recipients, with an ML layer on the way

4-phase
claim flow
View on GitHub ↗
Role
Built the foundation and screens 1-5 (Splash, Login, Home, AddDonation, DonationDetail), Firebase auth, live Firestore donations, Cloudinary photo upload and native Google Sign-In. 50/50 split with Mukta.
Team
Team of 2, with Mukta
When
Ongoing

Problem

A food donation app that connects donors and recipients. The base app was judged too basic, so an ML layer is being added to make it smarter about food safety and demand.

Approach

Started in Flutter, then rebuilt as a responsive React web app, with Capacitor wrapping it for mobile. Donations follow a 4-phase claim flow: Post, Request, Pickup, Delivered. A recipient's request can be cancelled while it's still pending. Planned, not built yet: a cooked-meal freshness classifier and donation-volume forecasting. A rule-based FSSAI safety layer comes first, a 50-60 image pilot dataset acts as a go/no-go gate before any CNN training, and Grad-CAM is planned for explainability.

Result

In progress. The base app is built; the ML layer is still planned and not built yet.

How it fits together

  1. 1. Post
    donor posts food, donation: available
  2. 2. Request
    recipient requests it, claim: Pending
  3. 3. Pickup
    donor accepts, then marks picked up, claim: RequestAccepted
  4. 4. Delivered
    claim: Claimed, leaves the available lists

Features

  • Firebase auth with native Google Sign-In
  • Live Firestore donations
  • Cloudinary photo upload
  • Screens: Splash, Login, Home, AddDonation, DonationDetail
  • Responsive web app, wrapped for mobile with Capacitor

Challenges

signInWithPopup breaks inside the Capacitor WebView, fixed by switching to @capgo/capacitor-social-login. GitHub also flagged a leaked Google API key, so I rotated it and moved it to .env.local.

What I learned

Web code can behave differently inside a Capacitor WebView: Google sign-in only worked after switching to a native plugin. A leaked API key flagged by GitHub taught me to rotate it and keep secrets in .env.local. The professor's feedback that the base app was too basic is why the ML layer is being planned.

Tech

ReactViteTailwindshadcn/uiCapacitorFirebase AuthFirestoreCloudinaryLeaflet + OpenStreetMap