A Django-based web application for restaurants to create, manage, and share digital menus with customers via QR codes.
A Django-based web application that allows restaurants to manage their digital menu and share it with customers through QR codes.
- Restaurant Management: Create and manage restaurant profiles
- Food Item Management: Add, view, and organize food items with images
- QR Code Generation: Automatically generate unique QR codes for each restaurant
- Menu Categorization: Organize items by category (Vegetarian, Non-Vegetarian, Beverage, Dessert)
- Customer Menu View: Customers can view the digital menu using the restaurant's QR code
- User Authentication: Secure login system for restaurant owners
- Image Support: Upload and display food item images
- Subscription Management: Track restaurant subscription status
RestaurantMenu/
├── base/ # Main app
│ ├── models.py # Restaurant and FoodItem models
│ ├── views.py # Application views
│ ├── urls.py # URL routing
│ ├── admin.py # Django admin configuration
│ └── migrations/ # Database migrations
├── RestaurantMenu/ # Project configuration
│ ├── settings.py # Django settings
│ ├── urls.py # Main URL configuration
│ └── wsgi.py # WSGI configuration
├── templates/ # HTML templates
│ └── Home/
│ ├── base.html # Base template
│ ├── login.html # Login page
│ ├── add-food.html # Add food item form
│ ├── view-food.html # View food items
│ ├── customer-menu.html # Customer menu view
│ └── my-qr.html # QR code display
├── static/ # Static files (CSS, JavaScript)
├── media/ # User-uploaded files
│ ├── food_images/ # Food item images
│ └── qr_codes/ # Generated QR codes
├── manage.py # Django management utility
└── requirements.txt # Project dependencies
- Python 3.8 or higher
- pip (Python package manager)
-
Clone the repository and navigate to the project directory
cd RestaurantMenu -
Create a virtual environment
python -m venv venv
-
Activate the virtual environment
- Windows:
venv\Scripts\activate
- Mac/Linux:
source venv/bin/activate
- Windows:
-
Install dependencies
pip install -r requirements.txt
-
Apply migrations
python manage.py makemigrations python manage.py migrate
-
Create a superuser (admin account)
python manage.py createsuperuser
-
Run the development server
python manage.py runserver
The application will be available at http://127.0.0.1:8000/
- Login: Access the login page at
/login/ - Add Food Items: Navigate to
/add-food/to add new menu items - View Menu: Go to
/view-food/to see all your menu items - Get QR Code: Visit
/my-qr/to view and download your restaurant's QR code
- Scan QR Code: Use a QR code scanner to scan your restaurant's QR code
- View Menu: The QR code will direct you to your restaurant's digital menu
- Browse Items: View all available food items with prices, descriptions, and images
user: OneToOne relationship with Django User modelrestaurant_name: Name of the restaurantslug: URL-friendly identifier (auto-generated)is_active: Active/inactive statussubscription_end: Subscription expiration dateqr_code: Auto-generated QR code image
restaurant: Foreign key to Restaurantname: Food item nameprice: Item pricequantity: Available quantitydescription: Item descriptioncategory: Category (Vegetarian, Non-Vegetarian, Beverage, Dessert)food_image: Item image
| Route | View | Description |
|---|---|---|
/login/ |
login_user() |
Restaurant owner login |
/add-food/ |
add_food() |
Add new food item |
/view-food/ |
view_food() |
View restaurant's food items |
/menu/<slug>/ |
customer_menu() |
Customer view of restaurant menu |
/my-qr/ |
my_qr() |
View restaurant's QR code |
- Database: SQLite (default) - Change in
RestaurantMenu/settings.pyfor production - Media files: Stored in
media/directory - Static files: Stored in
static/directory andstaticfiles/
QR codes are automatically generated when a restaurant is created or updated. The QR code URL points to the customer menu view:
http://127.0.0.1:8000/menu/{restaurant_slug}/
For deployment instructions, see RENDER_DEPLOYMENT.md
- Backend: Django 3.x/4.x
- Database: SQLite (Development), PostgreSQL (Production recommended)
- Frontend: HTML, CSS, JavaScript
- QR Code: qrcode library
- Authentication: Django built-in authentication
- Use environment variables for sensitive settings in production
- Enable HTTPS for all deployed sites
- Set
DEBUG = Falsein production - Use a production-grade database (PostgreSQL)
- Configure CORS and CSRF settings appropriately
- Keep dependencies updated
- Order management system
- Payment integration
- Admin dashboard analytics
- Menu templates
- Multi-language support
- Mobile app
- Inventory tracking
- Customer reviews and ratings
For issues, feature requests, or questions, please open an issue in the project repository.
This project is open source and available under the MIT License.