FoodOnline is a full-fledged Multi-Vendor Restaurant Marketplace built using Python and Django. The platform allows vendors to list their restaurants and food items, while customers can order food based on their location and preferences. This project offers comprehensive functionalities such as dynamic tax modules, location-based search, and payment gateway integrations.
- Vendor registration and authentication.
- Admin approval for vendors.
- Vendor-specific dashboards to manage orders, food items, and more.
- Custom restaurant profile form with validation.
- Location-based search to find nearby restaurants.
- Cart functionalities with AJAX requests, no page refresh needed.
- Place orders, generate order numbers, and handle after-order functionalities.
- Integration with PayPal, Payme and Click for seamless payments.
- Dynamic business hours and tax modules.
- Smart and basic search functionalities for finding food and restaurants.
- Custom user model to cater to both vendors and customers.
- PostgreSQL database configuration for robust data management.
- Email verification and token-based authentication.
- Django signals to handle user-related activities.
- Many-to-many relationships for handling vendor and food item associations.
- Google Autocomplete field for better search experience.
- Dynamic tax module integrated into the cart and checkout process.
- Marketplace functionality with multiple vendors.
- Mobile-responsive layout for a seamless experience on all devices.
- Django: Web framework for building the backend.
- PostgreSQL: Database management system.
- AJAX: For seamless frontend interactions.
- Paypal, Payme & Click: Payment gateway integration.
- Google Autocomplete: For restaurant search.
-
Clone the repository:
git clone https://github.com/Sardorbek-Zayniyev/foodOnline.git
-
Create a virtual environment:
python -m venv venv source venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Run database migrations:
python manage.py makemigrations python manage.py migrate
-
Create a superuser:
python manage.py createsuperuser
-
Start the development server:
python manage.py runserver
The app will be available at http://127.0.0.1:8000/
.
The project follows a modular structure, with each app dedicated to specific functionality:
accounts/
: Handles user authentication and registration.orders/
: Manages the cart and order processes.vendors/
: Manages vendor details and restaurant profiles.customers/
: Contains customer-specific features and profiles.foodmenu/
: Manages food items and menu-related functionalities.templates/
: Contains all the HTML templates used in the project.static/
: Stores all static files like CSS, JavaScript, and images.