Track your food. Waste less. Save more.
A smart food expiry tracker helping households reduce food waste through timely alerts and clean organization.
ZeroSpoil is a full-stack web application designed to help users efficiently manage food items by tracking expiry dates. It sends timely reminders to prevent food spoilage and promotes mindful consumption. Built as a complete CRUD system with secure Firebase authentication, it encourages sustainability by reducing food waste.
- 🔖 Add, edit, delete, and view food items with expiry dates
- 🔐 Firebase authentication (Register / Login / Logout)
- ⏰ Receive alerts before food items expire
- ✅ SweetAlert2-powered confirmation dialogs
- 💬 Real-time toast notifications using React Hot Toast
- 🔒 Protected routes ensuring secure user data handling
- 📱 Responsive design with Tailwind CSS and DaisyUI
- 🏷️ Dynamic page titles using React Helmet Async
| 🛠️ Technology | 💡 Purpose |
|---|---|
| ⚛ React | Frontend UI |
| 🔁 React Router | Routing & Navigation |
| 🌼 DaisyUI + 💨 Tailwind CSS | Styling & Components |
| 🔥 Firebase | Authentication & Backend |
| 🗃️ TanStack Query | Data Fetching & State Management (React Query) |
| 🌶 React Hot Toast | Toast Notifications |
| 🍬 SweetAlert2 | Alert Popups |
| 🎨 React Icons | Iconography |
| 🪖 React Helmet Async | SEO / Meta Tags |
| ⚡ Framer Motion | Animations |
🎯 Visit Live
👉 Open ZeroSpoil Now...
🌟 Server Code:
👉https://github.com/ei-shadi/ZeroSpoil-Server.git
- Clone The Repository For Frontend:
git clone https://github.com/ei-shadi/ZeroSpoil.git
cd eliteclub
npm install # inside root or / client folder- Clone The Repository For Backend:
git clone https://github.com/ei-shadi/ZeroSpoil-Server.git
cd server
npm install # inside root or / server folder- Configure environment variables:
Create a.envfile inside/serverfolder with:
MONGODB_URI=your_mongodb_uri
-
Add Firebase Admin SDK:
Place your Firebase Admin SDK file asfirebase-admin-key.jsonin the/serverfolder. -
👀 Let's Go Live:
cd ZeroSpoil ✨Client Side
npm run dev
----------------------
----------------------
cd ZeroSpoil-Server ✨Server Side
node index.js| Method | Endpoint | Description |
|---|---|---|
| GET | /foods-data |
Get all food items |
| GET | /upcoming-expire-foods |
Get foods expiring within 7 days |
| GET | /expired-foods |
Get expired foods |
| GET | /food-details/:id |
Get food item by ID |
| GET | /food-data-by-email/:email |
Get food items by user email (Auth) |
| POST | /foods-data |
Add new food item (Auth) |
| POST | /food-data/:id |
Add note to food item (Auth) |
| PUT | /foods-data/:id |
Update food item |
| DELETE | /foods-data/:id |
Delete food item (Auth) |
| GET | /foods-data/search |
Search & paginate food items |
🔐 Note: Protected routes require Firebase Bearer Token authentication.
ZeroSpoil
