AharaSetu is a community-driven platform designed to bridge the gap between surplus food and those in need. It connects donors, volunteers, and receivers to facilitate efficient food redistribution, reducing waste and fighting hunger.
To create a hunger-free world by leveraging technology to optimize food distribution networks, ensuring that no edible food goes to waste while there are hungry stomachs to feed.
- Donors 🍲: Easily list surplus food details (quantity, expiry, type). Manage profile and view donation history.
- Volunteers 🚚: Browse active food pickup jobs nearby. Verified profiles with identity checks. digital receipt system for transparent deliveries.
- Identity Verification: Volunteers and organizations undergo verification processes.
- Data Security: Powered by Appwrite for secure authentication and database management.
- Status Tracking: Track food status from "Listed" -> "Claimed" -> "Picked Up" -> "Delivered".
- Responsive Design: Built with Next.js 14, Tailwind CSS for a seamless experience on mobile and desktop.
- Interactive UI: Smooth animations using Framer Motion.
- Frontend Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Backend / Auth / DB: Appwrite
- State Management: Zustand
- Icons: Lucide React
- Animations: Framer Motion
- Forms: React Hook Form + Zod (Validation)
aharasetu/
├── app/ # Next.js App Router
│ ├── (auth)/ # Authentication Routes (Login, Register)
│ ├── (dashboard)/ # Protected Role-Based Dashboards
│ │ ├── donor/ # Donor specific pages & layout
│ │ ├── volunteer/ # Volunteer specific pages & layout
│ │ └── receiver/ # Receiver specific pages & layout
│ └── (marketing)/ # Public Landing Pages
├── components/ # Reusable UI Components
│ ├── shared/ # Global components (Navbar, Sidebar, Profile)
│ └── ui/ # Atomic UI elements (Buttons, Inputs, Cards)
├── lib/ # Utilities & Configurations
│ ├── appwrite/ # Appwrite SDK & Config
│ └── utils.ts # Helper functions
├── store/ # Global State (User Session, etc.)
└── types/ # TypeScript Type DefinitionsUse the following collections in your Appwrite project:
- Users: Standard Appwrite Users.
- Donor Profiles:
name(string),phone(integer),address(string),state(string),pincode(integer),profileImageId(string).
- Volunteer Profiles:
ngoRegistrationId(string),contactNumber(integer),address(string),state(string),pincodes(string array/CSV),profileImageId(string),isProfileComplete(boolean).
- Food Listings:
title,description,quantity,expiryDate,status,donorId,location,imageUrl.
- Node.js 18.17+
- Appwrite Cloud Account or Self-Hosted Instance
-
Clone the repository:
git clone https://github.com/NKomrade/AharaSetu.git cd AharaSetu -
Install dependencies:
npm install
-
Environment Setup: Create a
.env.localfile in the root:NEXT_PUBLIC_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 NEXT_PUBLIC_APPWRITE_PROJECT_ID=your_project_id NEXT_PUBLIC_APPWRITE_DATABASE_ID=your_database_id # Add other collection IDs as needed
-
Run Development Server:
npm run dev
Visit http://localhost:3000.
We welcome contributions!
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your Changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.