"A community-driven food rescue platform where AI does the heavy lifting β snap a photo, and a meal reaches someone in need."
- πΏ What is ResQPlate?
- πΌοΈ UI Showcase
- π Platform at a Glance
- β¨ Key Features
- ποΈ System Architecture
- π€οΈ User Journey
- πΊοΈ 3D System Map
- π οΈ Tech Stack
- π Project Structure
- π¦ Getting Started
- 10.1 π§ Prerequisites
- 10.2 β¬οΈ Install
- 10.3 π Environment Variables
- 10.4 π₯οΈ Run & Build
- β‘ Performance
- πΊοΈ Roadmap
- π€ Contributing
- β FAQ
- π Changelog
- π€ Author
- β Show Your Support
ResQPlate is a community-driven, AI-powered food rescue platform that connects donors, recipients, and volunteers to eliminate food waste and fight hunger. Donors can snap a photo of surplus food and post it in under 60 seconds β Groq Vision automatically extracts food details, Gemini AI matches it to nearby recipients, and volunteers coordinate real-time pickups via interactive maps.
π― Mission: Bridge the gap between food surplus and food scarcity using AI, community, and data.
| π | Version | π¦ Highlight |
|---|---|---|
| π | v2.0 |
ResQ-Agent Dispatcher Β· Eco-Heatmaps Β· Impact Analytics Β· Leaderboard |
| π | v1.5 |
Live order tracking Β· Volunteer routing Β· Smart Alerts Β· ResQBot |
| π | v1.0 |
Post in 60s Β· Groq Vision Β· Gemini Matching Β· Appwrite backend |
β‘ Quick Action Cards animate with botanical growth UI Β· Impact stats update in real-time Β· Smart Alerts pulse for nearby donations
π€ Groq Vision reads the food photo instantly Β· Gemini auto-fills Title, Quantity, Expiry Β· Zero manual typing required
π Leaflet maps volunteer position in real-time Β· Route optimisation for fastest pickup Β· Status updates ping donor and recipient simultaneously
π Carbon saved calculated per donation Β· Meals rescued counter Β· Eco-heatmaps show hunger vs. waste zones geospatially
π§ Instant Query Resolution via Groq Β· Real-time Logistics Tracking via Appwrite Β· Sub-200ms Inference powered by Groq LPU technology
| π₯οΈ View | π± Mobile | π» Tablet | π₯οΈ Desktop |
|---|---|---|---|
| π Dashboard | β | β | β |
| πΈ Post in 60s | β | β | β |
| πΊοΈ Live Tracking | β | β | β |
| π Analytics | β | β | β |
| π¬ ResQBot Chat | β | β | β |
mindmap
root((πΏ ResQPlate))
π€ AI Engine
Groq Vision
Gemini Matching
ResQBot Chat
ResQ-Agent Dispatcher
π½οΈ Donor Flow
Post in 60s
AI Form Fill
Impact Tracking
π Recipient Flow
Browse Donations
Request Food
Order Tracking
π΄ Volunteer Flow
Pickup Routes
Live Map
Delivery Confirm
π Impact
Analytics Dashboard
Eco Leaderboard
Carbon Saved
| π’ Metric | π― Value | π Notes |
|---|---|---|
| β‘ Post Time | < 60s |
Photo β live listing via Groq Vision |
| π€ AI Models | 2 |
Groq Llama 3.2 Vision + Google Gemini |
| π App Pages | 16+ |
Full platform β dashboard to leaderboard |
| π§© Components | 25+ |
Reusable atomic UI library |
| πͺ Custom Hooks | 3 |
Tracking, Alerts, Volunteer pickups |
| πΊοΈ Map Features | 3 |
Live tracking Β· Routing Β· Eco-Heatmaps |
| πΈ | Post in 60 Seconds | Snap a food photo β Groq Vision + Gemini auto-extract title, quantity, expiry, and category. Zero typing. |
| π€ | Smart AI Matching | Gemini AI matches donations with nearby recipients based on location, dietary need, and urgency |
| π¬ | ResQBot Chatbot | Gemini-powered conversational assistant for platform navigation, donation tips, and impact queries |
| π§ | ResQ-Agent Dispatcher | Deterministic agentic workflow (Groq Llama 3.1) for automated pickup negotiation between volunteers and donors |
| π₯ | Smart Eco-Heatmaps | Leaflet-powered geospatial visualisation showing hunger zones vs. food waste hotspots in your city |
| πΊοΈ | Live Order Tracking | Real-time volunteer position on an interactive map β donor and recipient both see pickup progress |
| π΄ | Volunteer Pickups | Route-optimised pickup scheduling with one-tap accept and delivery confirmation |
| π | Impact Analytics | Personal + global dashboards β meals rescued, carbon saved, waste diverted, all charted over time |
| π | Community Leaderboard | Gamified ranking by donation impact β top donors and volunteers recognised in real-time |
| π± | Botanical Growth UI | Quick Action Cards animate as botanical trees growing β each donation visually grows the community garden |
| π | Smart Alerts | Push notifications for nearby donation opportunities, expiring food, and pickup assignments |
| π | Secure Auth | Appwrite-powered user authentication, profile management, and protected routes |
flowchart TB
subgraph Client["π CLIENT LAYER β React 19 + Vite 7"]
UI[βοΈ React Components]
Router[π£οΈ React Router DOM 7]
State[π Context API<br/>Auth + Cart]
Motion[π¨ Framer Motion<br/>Animations]
end
subgraph AI["π€ AI LAYER"]
Groq[ποΈ Groq Vision<br/>Image Analysis]
Gemini[π§ Gemini AI<br/>Smart Matching]
ResQBot[π¬ ResQBot<br/>Chat Assistant]
Agent[π΅οΈ ResQ-Agent<br/>Dispatcher]
end
subgraph Services["βοΈ SERVICE LAYER"]
Appwrite[π Appwrite<br/>Auth Β· DB Β· Storage Β· Realtime]
Axios[π‘ Axios HTTP]
Toast[π Smart Alerts]
Email[π§ EmailJS]
end
subgraph Maps["πΊοΈ MAPPING LAYER"]
Leaflet[πΊοΈ Leaflet]
ReactLeaflet[βοΈ React Leaflet]
Heatmap[π₯ Eco Heatmaps]
end
subgraph Pages["π 16+ PAGES"]
P1[π Dashboard]
P2[πΈ Post in 60s]
P3[π½οΈ Food Listing]
P4[πΊοΈ Order Tracking]
P5[π Analytics]
P6[π Leaderboard]
P7[π΄ Volunteer Pickup]
end
UI --> Router --> Pages
UI --> State
UI --> Motion
Pages --> AI
Pages --> Services
Pages --> Maps
P2 --> Groq --> Gemini
P3 --> Gemini
P4 --> ReactLeaflet --> Leaflet
P5 --> Heatmap
classDef client fill:#0a2e0a,stroke:#16a34a,stroke-width:2px,color:#fff;
classDef ai fill:#0a0a2e,stroke:#4285F4,stroke-width:2px,color:#fff;
classDef svc fill:#2e0a0a,stroke:#FF3366,stroke-width:2px,color:#fff;
classDef map fill:#0a1a2e,stroke:#199900,stroke-width:2px,color:#fff;
classDef page fill:#1a1a0a,stroke:#84cc16,stroke-width:2px,color:#fff;
class UI,Router,State,Motion,Pages,P1,P2,P3,P4,P5,P6,P7 client;
class Groq,Gemini,ResQBot,Agent ai;
class Appwrite,Axios,Toast,Email svc;
class Leaflet,ReactLeaflet,Heatmap map;
| π€ Model | π§ Task | β‘ Trigger | π Output |
|---|---|---|---|
| Groq Llama 3.2 Vision | Image analysis | Food photo uploaded | Title, quantity, expiry, category auto-filled |
| Google Gemini | Smart matching | Donation posted | Top-3 nearby recipient matches |
| Google Gemini | ResQBot chat | User question | Conversational platform guidance |
| Groq Llama 3.1 | ResQ-Agent | Volunteer assigned | Pickup negotiation agentic workflow |
flowchart LR
subgraph Input["π₯ INPUT"]
A[πΈ Photo Upload]
B[π Manual Entry]
end
subgraph AI_Processing["π€ AI PROCESSING"]
C[ποΈ Groq Vision<br/>Image Analysis]
D[π§ Gemini<br/>Smart Matching]
E[π¬ ResQBot<br/>AI Assistant]
end
subgraph Core["βοΈ CORE SERVICES"]
F[π Appwrite DB]
G[πΊοΈ Leaflet Maps]
H[π Smart Alerts]
end
subgraph Output["π€ OUTPUT"]
I[πΏ Donor Impact]
J[π½οΈ Recipient Fed]
K[π΄ Volunteer Active]
end
A --> C --> D --> F
B --> F
E --> D
F --> G --> K
F --> H --> J
F --> I
sequenceDiagram
autonumber
actor Donor
participant App as πΏ ResQPlate
participant AI as π€ AI Engine
participant DB as π Appwrite
participant Vol as π΄ Volunteer
participant Rec as π½οΈ Recipient
Note over Donor,App: πΈ Phase 1 β Post in 60s
Donor->>App: Snap food photo
App->>AI: Analyze via Groq Vision
AI-->>App: Auto-fill food details
App->>DB: Post donation listing
DB-->>App: β
Confirmed
Note over App,Rec: π€ Phase 2 β AI Matching
App->>AI: Find matches via Gemini
AI-->>App: Top recipient matches
App->>Rec: π Notify β food available
Note over App,Vol: π΄ Phase 3 β Volunteer Coordination
App->>Vol: π Notify pickup opportunity
Vol->>App: Accept pickup
App->>Rec: Food is on the way!
Note over Vol,Donor: πΏ Phase 4 β Delivery & Impact
Vol->>App: Confirm pickup
App->>DB: Update status β in transit
Vol->>App: Confirm delivery
App->>DB: Mark complete
App->>Donor: πΏ Impact summary β tree grows!
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π FRONTEND LAYER β React 19 + Vite 7 β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Pages β’ Components β’ Hooks β’ Contexts β’ Layouts β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β π€ AI LAYER β Groq + Gemini β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Vision Analysis β’ Smart Matching β’ Chatbot β’ Agent β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β πΊοΈ MAPPING LAYER β Leaflet + React Leaflet β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Live Tracking β’ Route Optimisation β’ Eco-Heatmaps β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β π BACKEND LAYER β Appwrite Cloud β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Auth β’ Database β’ Storage β’ Functions β’ Realtime β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βΌ
π Community Impact
(π½οΈ Food Waste β Β· π Hunger β)
| ποΈ Layer | βοΈ Technologies | π Responsibility |
|---|---|---|
| π Frontend | React 19 Β· Vite 7 Β· Tailwind 4 Β· Framer Motion | UI rendering, animations, routing, state |
| π€ AI Engine | Groq SDK Β· Google Gemini | Image analysis, matching, chatbot, agent |
| πΊοΈ Maps | Leaflet Β· React Leaflet | Live tracking, route optimisation, heatmaps |
| π Backend | Appwrite | Auth, database, file storage, realtime events |
| βοΈ Capability | π¬ Implementation | π Result |
|---|---|---|
| β‘ Post Speed | Groq Vision β Gemini pipeline | Food listed in under 60 seconds |
| π€ AI Matching | Gemini location + need scoring | Right food to right person |
| πΊοΈ Live Tracking | React Leaflet + Appwrite Realtime | Volunteer position updates live |
| π¨ Animations | Framer Motion botanical variants | Engaging, purposeful micro-interactions |
| π Auth | Appwrite Auth + ProtectedRoute |
Secure access control across all pages |
| π Analytics | Client-side aggregation + charting | Personal + global impact dashboards |
πΏ ResQPlate/frontend/
β
βββ π¬ src/animations/
β βββ variants.js # Framer Motion animation variants
β
βββ π§© src/components/
β βββ π¬ Chat/
β β βββ ResQBot.jsx # Gemini AI chatbot interface
β βββ π§ Contact/
β β βββ Contact.jsx # Contact form (EmailJS)
β βββ π Dashboard/
β β βββ ImpactCard.jsx # Animated impact statistics card
β β βββ QuickDonationModal.jsx # One-tap quick donation modal
β βββ π About.jsx # Platform about page
β βββ π FoodCard.jsx # Food listing item card
β βββ π Landing.jsx # Public landing page
β βββ π·οΈ Logo.jsx # Brand logo component
β βββ πΊοΈ MapView.jsx # Leaflet interactive map wrapper
β βββ π Navbar.jsx # Responsive navigation bar
β βββ ποΈ PageTransition.jsx # Framer Motion page transitions
β βββ π ProtectedRoute.jsx # Auth guard for private routes
β βββ β‘ QuickActionCard.jsx # Botanical growth animated cards
β
βββ π src/context/
β βββ AuthContext.jsx # Appwrite auth state + helpers
β βββ CartContext.jsx # Food cart state management
β
βββ πͺ src/hooks/
β βββ useOrderTracking.js # Real-time order status logic
β βββ useSmartAlerts.js # Push notification + alert polling
β βββ useVolunteerPickups.js # Volunteer assignment + routing
β
βββ πΌοΈ src/layouts/
β βββ DashboardLayout.jsx # Shared dashboard sidebar + header
β
βββ π src/pages/
β βββ π€ AIMatching.jsx # Gemini-powered match discovery
β βββ π Analytics.jsx # Impact charts + eco-heatmaps
β βββ π Cart.jsx # Food cart review
β βββ π³ Checkout.jsx # Checkout + confirmation flow
β βββ π DashboardHome.jsx # Main dashboard entry
β βββ πΈ DonateFood.jsx # Manual food donation form
β βββ π½οΈ FoodListing.jsx # Browse all available donations
β βββ πΏ ImpactDelivered.jsx # Post-delivery impact summary
β βββ π Leaderboard.jsx # Community ranking board
β βββ π Login.jsx # Appwrite auth login
β βββ πΊοΈ OrderTracking.jsx # Live map order tracker
β βββ β‘ PostIn60Seconds.jsx # AI-powered 60s donation flow
β βββ π€ Profile.jsx # User profile + history
β βββ βοΈ Settings.jsx # Preferences + notifications
β βββ π Signup.jsx # New user registration
β βββ π SmartAlerts.jsx # Donation opportunity alerts
β βββ π΄ VolunteerPickup.jsx # Volunteer pickup dashboard
β
βββ βοΈ src/services/
β βββ aiService.js # Groq + Gemini API wrappers
β βββ appwrite.js # Appwrite client configuration
β βββ dataService.js # Data fetching + caching helpers
β βββ impactService.js # Carbon + meal impact calculations
β
βββ ποΈ src/data/
β βββ mockData.js # Dev-time seed data
β
βββ π src/App.jsx # Root component + all routes
βββ π src/main.jsx # Vite app entry point
βββ π¨ src/index.css # Global styles + Tailwind directives
| π οΈ Tool | π Version | π Link |
|---|---|---|
β₯ 18.x |
nodejs.org | |
β₯ 8.x |
Bundled with Node | |
| π Appwrite | Cloud or self-hosted | appwrite.io |
| π€ Groq API Key | Free tier | console.groq.com |
| π§ Gemini API Key | Free tier | aistudio.google.com |
π₯ Step 1 β Clone
git clone https://github.com/salonyranjan/ResQpla8.git
cd ResQpla8/frontendπ¦ Step 2 β Install dependencies
npm installπ Step 3 β Create frontend/.env
cp .env.example .env# Appwrite Configuration
VITE_APPWRITE_ENDPOINT="https://fra.cloud.appwrite.io/v1"
VITE_APPWRITE_PROJECT_ID="your_project_id"
VITE_APPWRITE_PROJECT_NAME="ResQPlate"
VITE_APPWRITE_DATABASE_ID="your_database_id"
VITE_APPWRITE_PICKUPS_COLLECTION_ID="pickups"
VITE_APPWRITE_BUCKET_ID="your_bucket_id"
# AI Inference (Groq LPU)
# IMPORTANT: Do not share your real key in public repositories.
VITE_GROQ_API_KEY="gsk_your_secret_key_here"
# Email Notification Service (EmailJS)
VITE_EMAILJS_PUBLIC_KEY="your_public_key"
VITE_EMAILJS_SERVICE_ID="your_service_id"
VITE_EMAILJS_NEWSLETTER_TEMPLATE_ID="your_newsletter_template_id"
VITE_EMAILJS_CONTACT_TEMPLATE_ID="your_contact_template_id"π Security note:
.envis git-ignored. Never commit real keys. A.env.exampletemplate is provided β copy it and fill in your values.
| π Script | π» Command | π Purpose |
|---|---|---|
| π Dev server | npm run dev |
Start Vite HMR at http://localhost:5173 |
| ποΈ Production build | npm run build |
Optimised output in dist/ |
| π Preview build | npm run preview |
Test production build locally |
| π§Ή Lint | npm run lint |
ESLint code quality check |
| π Metric | π― Value | π Notes |
|---|---|---|
| β‘ Post in 60s | < 60s |
Photo β live listing via Groq + Gemini |
| π€ Groq Vision | ~800ms |
Image analysis + field extraction |
| π§ Gemini Match | ~600ms |
Recipient matching query |
| ποΈ Vite Build | < 5s |
Production bundle with tree-shaking |
| πΊοΈ Map Render | < 200ms |
Leaflet tiles + marker placement |
| π¨ Animation FPS | 60fps |
Framer Motion hardware-accelerated |
| π¦ Bundle | Minimised | Code splitting + lazy loading per route |
| Status | π Feature | π― Priority |
|---|---|---|
| β | Post in 60s β Groq Vision + Gemini auto-fill | π΄ Core |
| β | Smart AI Matching β Gemini recipient discovery | π΄ Core |
| β | Live Order Tracking β Leaflet maps | π΄ Core |
| β | ResQBot β Gemini conversational assistant | π΄ Core |
| β | ResQ-Agent Dispatcher β Llama 3.1 agentic workflow | π΄ Core |
| β | Eco-Heatmaps β hunger vs. waste geospatial viz | π΄ Core |
| β | Leaderboard + Impact Analytics | π΄ Core |
| π | Push Notifications β native browser alerts | π‘ High |
| π | Offline Mode β PWA + service worker caching | π‘ High |
| π | Multi-language i18n β regional language support | π‘ High |
| π | Mobile App β React Native port | π’ Planned |
| π | NGO Dashboard β bulk donation management panel | π’ Planned |
| π | Carbon Credits β blockchain-verified impact tokens | π’ Planned |
| π‘ | AR Food Scanner β camera overlay for food ID | π΅ Idea |
| π‘ | Voice Commands β donate by speaking | π΅ Idea |
All contributions to reduce food waste are warmly welcome! πΏ
# 1. Fork the repository on GitHub
# 2. Create your feature branch
git checkout -b feature/your-feature
# 3. Commit with conventional format
git commit -m "feat: add your feature"
# Prefixes: fix: | docs: | style: | refactor: | test: | chore:
# 4. Push & open a PR
git push origin feature/your-featureContribution Guidelines:
- Follow the existing ESLint config β run
npm run lintbefore submitting - Write meaningful, conventional commit messages
- Update relevant documentation if adding new features
- Test across mobile and desktop breakpoints
Priority areas:
| π₯ Area | π What's Needed |
|---|---|
| π i18n | Multi-language support with react-i18next |
| π± PWA | Service worker + offline caching strategy |
| π§ͺ Tests | Vitest + React Testing Library component coverage |
| π¨ UI | New Tailwind component variants, dark mode |
π€ How does Post in 60 Seconds actually work?
When you upload a food photo, it's sent to Groq's Llama 3.2 Vision API, which identifies the food type, quantity, and condition. That structured output is passed to Google Gemini, which writes a formatted listing title, selects the correct category, and estimates an expiry window. The entire round-trip takes under 2 seconds β you just review and tap Post.
π Are my API keys safe in the browser?
This is a frontend-first project using VITE_ prefixed env vars, which means keys are bundled into the client. For production at scale, proxy all AI calls through a backend serverless function (Appwrite Functions or Vercel Edge Functions) so keys never ship to the browser. A backend proxy layer is on the roadmap.
πΊοΈ Does live tracking use real GPS?
Yes β the useOrderTracking hook uses the browser's navigator.geolocation API to get the volunteer's coordinates and updates them in Appwrite Realtime. The donor and recipient see the volunteer's position update live on the Leaflet map without polling.
π Can I self-host Appwrite instead of using the cloud?
Absolutely. Update VITE_APPWRITE_ENDPOINT in .env to your self-hosted instance URL (e.g. https://appwrite.yourdomain.com/v1). All Appwrite SDK calls in src/services/appwrite.js will automatically point to your instance.
| Version | Highlights |
|---|---|
π v2.0.0 |
ResQ-Agent Dispatcher Β· Eco-Heatmaps Β· Analytics Β· Leaderboard Β· Botanical UI |
v1.5.0 |
Live order tracking Β· Volunteer routing Β· Smart Alerts Β· ResQBot chatbot |
v1.0.0 |
π Initial release β Post in 60s Β· Groq Vision Β· Gemini Matching Β· Appwrite |
|
π€ AI Engineer Β Β·Β π§βπ» Full-Stack Dev Β Β·Β πΏ Tech for Social Good "Using AI and community to turn food surplus into impact β one plate at a time." |
If ResQPlate inspired you, taught you something new, or made you think about food waste differently β show it some love! πΏ
π‘ Pro Tip: Go to GitHub repo Settings β Social Preview and upload the hero screenshot. When you share on LinkedIn, your beautiful Cyber-Green UI shows instead of a generic GitHub card β perfect for a social impact project.
Made with πΏ by Salony Ranjan Β Β·Β Β© 2026 ResQPlate Β· MIT
