What is leftover love?
Leftover Love started as a hackathon project that was too impactful for us to just let it sit. It is a social impact platform that connects restaurants with surplus food to charities and local food banks. Our mission is to reduce food waste while helping communities in need, turning surplus into smiles and waste into warmth.
- Food Listing Management: Easily list surplus food items instead of discarding them
- Impact Tracking: Monitor environmental impact and community contribution
- Pickup Coordination: Schedule and manage food pickup with local charities
- Analytics Dashboard: Track donations, food saved, and people helped

- Food Discovery: Browse available food donations from local restaurants
- Pickup Scheduling: Coordinate pickup times that work for your organization
- Impact Reporting: Track received donations and community impact
- Profile Management: Maintain charity information and contact details

- Real-time Updates: Live food availability and pickup status
- Ratings on both ends: Both parties can rate their experience with each other
- Real impact metrics: Shows the amount of love the organization has given through metrics
- Secure Authentication: JWT-based authentication for both user types
- Responsive Design: Works seamlessly on desktop and mobile devices
- RESTful API: Complete API documentation with Swagger/OpenAPI
- FastAPI: Modern, fast web framework for building APIs
- SQLAlchemy: Python SQL toolkit and Object-Relational Mapping
- Alembic: Database migration tool
- SQLite: Lightweight database for development (PostgreSQL for production)
- Pydantic: Data validation using Python type annotations
- JWT: Secure authentication and authorization
- Next.js 15: React framework with server-side rendering
- React 19: Modern UI library with hooks and functional components
- CSS Modules: Scoped styling for component-based architecture
- Responsive Design: Mobile-first approach with modern CSS Grid/Flexbox
Before running this application, make sure you have:
- Node.js (v16 or higher) - Download here
- Python (v3.9 or higher) - Download here
- Git - Download here
git clone https://github.com/yourusername/leftover-love.git
cd leftover-lovecd backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration
# Run database migrations
alembic upgrade head
# Start the development server
python main.pyThe API will be available at http://localhost:8000
- API Documentation:
http://localhost:8000/docs - Alternative docs:
http://localhost:8000/redoc
cd frontend/nowastewebapp
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your configuration
# Start the development server
npm run devThe frontend will be available at http://localhost:3000
# Database
DATABASE_URL=sqlite:///./sql_app.db
# Security
SECRET_KEY=your-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# CORS
FRONTEND_URL=http://localhost:3000NEXT_PUBLIC_API_URL=http://localhost:8000The API follows RESTful conventions and includes comprehensive documentation:
POST /api/auth/signup- Register new userPOST /api/auth/login- User loginGET /api/auth/me- Get current user info
POST /api/restaurants/profile- Create restaurant profileGET /api/restaurants/profile- Get restaurant profileGET /api/restaurants/stats- Get restaurant statistics
POST /api/charities/profile- Create charity profileGET /api/charities/profile- Get charity profile
GET /api/listings/- Get all available food itemsPOST /api/listings/- Create new food listingPUT /api/listings/{id}- Update food listingDELETE /api/listings/{id}- Delete food listingPOST /api/listings/{id}/pickup- Schedule pickup
cd backend
pytestcd frontend/nowastewebapp
npm test- Set up production database (PostgreSQL)
- Configure environment variables
- Deploy using platform-specific instructions
- Connect your Git repository
- Configure build settings
- Set environment variables
- Deploy
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Made by Jayden Truong, Michael Bazzett, Rohin Aulukh, and Hugo Najafi (Goats)
