FoodGram is a full-stack video-sharing web application, similar to TikTok or Instagram Reels, but focused on food. It allows users to discover food from local partners and for food partners to showcase their items.
- Dual Authentication System: Separate registration and login for "Users" and "Food Partners."
- Video Reel Feed: A scrollable, auto-playing feed of food videos (like Reels).
- User Interaction: Users can like and save their favorite food videos.
- Partner Profiles: Users can visit the profile pages of the food partners.
- Video Upload: Food partners can create and upload new food items/videos.
- Frontend: React, React Router, Axios, Material-UI Icons
- Backend: Node.js, Express.js
- Database: MongoDB (with Mongoose)
- Authentication: JSON Web Tokens (JWT)
- File Storage: ImageKit (for video uploads)
Here is the high-level structure of the FoodGram application:
FoodGram/ ├── backend/ │ ├── controllers/ │ │ ├── auth.controller.js │ │ ├── food.controller.js │ │ └── ... │ ├── middleware/ │ │ └── auth.middleware.js │ ├── models/ │ │ ├── user.model.js │ │ ├── foodpartner.model.js │ │ └── food.model.js │ ├── routes/ │ │ ├── auth.routes.js │ │ ├── food.routes.js │ │ └── food-partner.routes.js │ ├── .env.example │ ├── app.js │ ├── package.json │ └── server.js │ ├── frontend/ │ ├── src/ │ │ ├── components/ │ │ │ └── BottomNavBar.jsx │ │ ├── pages/ │ │ │ ├── general/ │ │ │ │ ├── Home.jsx │ │ │ │ └── Saved.jsx │ │ │ ├── food-partner/ │ │ │ │ ├── CreateFood.jsx │ │ │ │ └── Profile.jsx │ │ │ ├── UserLogin.jsx │ │ │ ├── UserRegister.jsx │ │ │ └── ... │ │ ├── styles/ │ │ │ └── auth.css │ │ ├── AppRoutes.jsx │ │ └── main.jsx │ ├── .env.example │ ├── index.html │ └── package.json │ ├── .gitignore └── README.md
Follow these instructions to get a copy of the project running on your local machine.
- Node.js (v18 or later)
- npm
- A MongoDB database (You can use a free MongoDB Atlas cluster)
git clone [https://github.com/AshutoshRaj1260/FoodGram.git](https://github.com/AshutoshRaj1260/FoodGram.git)
cd FoodGram