Transform your restaurant menu into an interactive digital experience accessible via QR code
Quick Start โข Demo Credentials โข Features โข Installation โข Documentation
- Overview
- Problem Statement
- Solution
- Quick Start
- Demo Credentials
- Features
- Technology Stack
- System Architecture
- Project Structure
- Installation
- Usage Guide
- Documentation
- Screenshots
- Future Enhancements
- Contributing
- License
QRDine is a production-ready, multi-tenant SaaS platform that empowers restaurants to create and manage digital menus accessible via QR codes. No app installation required for customers, no technical knowledge needed for restaurant owners.
| ๐จ Restaurants | โ Cafes | ๐ Food Trucks | ๐บ Bars |
|---|---|---|---|
| Full-service dining | Quick-service cafes | Mobile vendors | Drink menus |
Live Demo: https://qr-dine-15cf.onrender.com
| Feature | Benefit |
|---|---|
| ๐ 5-Minute Setup | From registration to live menu in under 5 minutes |
| ๐ฐ โน0 to Start | Free tier available, no credit card required |
| ๐ฑ Zero App Required | Customers just scan and browseโno downloads |
| ๐ Real-Time Updates | Mark items unavailable instantly, reflects immediately |
| ๐ Multi-Tenant Ready | One platform, unlimited restaurants |
| ๐ Analytics Ready | Built-in dashboard with key metrics |
| ๐จ Mobile-First Design | Optimized for smartphones and tablets |
| ๐ Secure & Reliable | Django-powered backend with role-based authentication |
# 1๏ธโฃ Clone the repository
git clone https://github.com/Sanchet237/qrdine.git
cd qrdine
# 2๏ธโฃ Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3๏ธโฃ Install dependencies
pip install -r requirements.txt
# 4๏ธโฃ Setup database
python manage.py migrate
# 5๏ธโฃ Create superuser (optional)
python manage.py createsuperuser
# 6๏ธโฃ Run development server
python manage.py runserver๐ Success! Visit http://127.0.0.1:8000/ to see the application.
๐ Next Steps: See Installation for detailed setup instructions.
|
Platform Administration Panel What you can do:
|
Restaurant Dashboard & Menu Management What you can do:
๐ฝ๏ธ View Public Menu: https://qr-dine-15cf.onrender.com/menu/hotel-subedar/ |
๐ก Tip: These demo accounts are created automatically when you run the management commands included in the project. See restaurants/management/commands/ for details.
Traditional physical menus face several challenges:
- Costly to update: Reprinting menus for price changes or new items is expensive
- Unhygienic: Shared menus pose sanitation concerns, especially post-pandemic
- Static experience: No real-time availability updates (sold-out items)
- Limited information: Space constraints restrict detailed descriptions and images
- Language barriers: Difficult to offer multi-language support
QRDine is a multi-tenant SaaS platform that enables restaurants to digitize their menus instantly. Customers scan a QR code and access a mobile-optimized menu without installing any app. Restaurant owners manage their menus through an intuitive dashboard with real-time updates.
Key Benefits:
- โ Instant menu updates without reprinting
- โ Contactless ordering experience
- โ Rich media support (HD images, descriptions)
- โ Real-time availability toggles
- โ Analytics-ready architecture
- โ Zero app installation for customers
| ๐ช Restaurant Owners | ๐ฑ Customers | ๐ Platform Admins |
|---|---|---|
| ๐ Self-service registration | ๐ฒ No app installation needed | ๐๏ธ Full platform control |
| ๐ฝ๏ธ Visual menu builder | ๐ Real-time search | ๐ฅ User management |
| ๐ธ Image upload & management | ๐ท๏ธ Smart category filters | ๐ Analytics dashboard |
| ๐ฑ QR code auto-generation | ๐ฟ Vegan/non-veg indicators | ๐๏ธ Bulk operations |
| ๐ Real-time availability toggle | ๐ฐ Clear pricing display | ๐ก๏ธ Security controls |
| ๐ Dashboard with analytics | ๐จ Mobile-first UI/UX | ๐ง Platform configuration |
| ๐จ Restaurant profile customization | ๐ Fast, smooth browsing | ๐ Growth monitoring |
| ๐ผ๏ธ Logo & branding upload | โ No registration required | โ๏ธ Settings management |
- ๐ช Self-Service Registration โ Restaurant owners can sign up and onboard independently
- ๐ Menu Builder โ Create categories and menu items with images, descriptions, and prices
- ๐ Real-Time Availability Toggle โ Mark items as sold-out instantly (reflects immediately on customer menus)
- ๐ผ๏ธ Image Management โ Upload high-quality dish images with automatic optimization
- ๐ฑ QR Code Generation โ Auto-generated scannable QR codes for each restaurant
- ๐ Dashboard Analytics โ View total items, available items, and sold-out count
- ๐จ Profile Customization โ Update restaurant name, address, description, and logo
- ๐ฒ No App Required โ Access menus directly via QR scan (mobile browser)
- ๐จ Modern UI/UX โ Dark theme with smooth animations and responsive design
- ๐ Advanced Search โ Real-time search across all menu items
- ๐ท๏ธ Smart Filters:
- Filter by category (Starters, Main Course, Desserts, etc.)
- Dietary filters (Veg Only / Non-Veg Only)
- Availability filter (Hide sold-out items)
- ๐ฟ Visual Dietary Indicators โ Green dot for veg, red triangle for non-veg
- ๐ฐ Clear Pricing โ Prices displayed in local currency
- ๐ Restaurant Management โ Approve/suspend restaurants
- ๐ฅ User Management โ View and manage restaurant admin accounts
- ๐ Platform Dashboard โ Overview of total restaurants and activity
- ๐๏ธ Bulk Operations โ Delete inactive restaurants
| Layer | Technology | Purpose |
|---|---|---|
| Backend Framework | Django 4.2.11 (Python 3.10+) | Web framework, ORM, authentication |
| Database (Dev) | SQLite3 | Lightweight development database |
| Database (Prod) | PostgreSQL | Production-ready relational database |
| Frontend | Django Templates + Vanilla JS | Server-side rendering with progressive enhancement |
| Styling | Tailwind CSS (CDN) | Utility-first CSS framework |
| Image Processing | Pillow 10.3.0 | Image uploads, optimization, resizing |
| QR Generation | qrcode[pil] 7.4.2 | Dynamic QR code generation |
| Static Files | WhiteNoise 6.6.0 | Static file serving in production |
| Environment | python-dotenv 1.0.0 | Environment variable management |
| WSGI Server | Gunicorn | Production HTTP server |
โโโโโโโโโโโโโโโ
โ Customer โ โโ> Scans QR Code โโ> Mobile Menu Viewer
โโโโโโโโโโโโโโโ (Public, No Login)
โ
โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
โ Restaurant โ โโ> Dashboard โโ> โ Django Backendโ
โ Owner โ (CRUD Menu) โ (Business โ
โโโโโโโโโโโโโโโโ โ Logic) โ
โโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ โ
โ Super Admin โ โโ> Admin Panel โโ> โ
โโโโโโโโโโโโโโโโ (Platform Mgmt) โผ
โโโโโโโโโโโโโโโโโโ
โ SQLite DB โ
โ (Models: โ
โ Restaurant, โ
โ MenuItem, โ
โ Category) โ
โโโโโโโโโโโโโโโโโโ
Data Flow:
- Restaurant owner registers โ Creates account
- Adds menu items โ Stored in database
- QR code auto-generated โ Links to
/menu/<restaurant-slug>/ - Customer scans QR โ Fetches live menu data
- Owner toggles availability โ Updates reflected instantly
qrdine/
โโโ accounts/ # User authentication & authorization
โ โโโ models.py # Custom User model (roles: superadmin, restaurant_admin)
โ โโโ views.py # Login, registration, logout views
โ โโโ forms.py # Registration and login forms
โ โโโ urls.py # Auth routes
โ
โโโ restaurants/ # Restaurant management core
โ โโโ models.py # Restaurant, Category, MenuItem models
โ โโโ views.py # Dashboard, menu CRUD, QR generation
โ โโโ utils.py # QR code generation utility
โ โโโ forms.py # Menu item and category forms
โ โโโ decorators.py # @restaurant_required decorator
โ โโโ context_processors.py # Global template context
โ โโโ management/
โ โโโ commands/ # CLI commands (create demo data)
โ
โโโ menu/ # Public menu viewer (customer-facing)
โ โโโ views.py # menu_viewer() - public menu display
โ โโโ urls.py # /menu/<slug>/ route
โ
โโโ superadmin/ # Platform administration
โ โโโ views.py # Platform dashboard, restaurant management
โ โโโ decorators.py # @superadmin_required decorator
โ โโโ urls.py # /superadmin/ routes
โ
โโโ core/ # Landing page & shared utilities
โ โโโ views.py # Landing page, 404/500 handlers
โ โโโ urls.py # Root URL
โ
โโโ templates/ # HTML templates
โ โโโ base.html # Base template with nav
โ โโโ base_dashboard.html # Dashboard-specific base
โ โโโ accounts/ # Login, registration pages
โ โโโ restaurants/ # Dashboard templates
โ โโโ menu/ # Public menu viewer
โ โโโ superadmin/ # Admin templates
โ โโโ core/ # Landing page
โ
โโโ static/ # Static assets
โ โโโ images/ # Logo, branding assets
โ โโโ qr_codes/ # Generated QR codes (static copy)
โ
โโโ media/ # User-uploaded files
โ โโโ logos/ # Restaurant logos
โ โโโ menu_items/ # Dish images
โ โโโ qr_codes/ # Generated QR codes
โ
โโโ qrdine/ # Django project settings
โ โโโ settings.py # Configuration
โ โโโ urls.py # Root URL configuration
โ โโโ wsgi.py # WSGI entry point
โ
โโโ manage.py # Django management script
โโโ requirements.txt # Python dependencies
โโโ .env.example # Environment variables template
โโโ README.md # This file
- Python 3.10 or higher
- pip (Python package manager)
- virtualenv (recommended)
git clone https://github.com/Sanchet237/qrdine.git
cd qrdine# Windows
python -m venv venv
venv\Scripts\activate
# macOS/Linux
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtDependencies installed:
- Django==4.2.11
- Pillow==10.3.0
- qrcode[pil]==7.4.2
- whitenoise==6.6.0
- python-dotenv==1.0.0
Create a .env file in the project root:
cp .env.example .envEdit .env and update:
SECRET_KEY=your-super-secret-key-here-change-in-production
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1# Run migrations in order
python manage.py makemigrations accounts
python manage.py migrate accounts
python manage.py makemigrations restaurants
python manage.py migrate restaurants
python manage.py migratepython manage.py createsuperuserImportant: When prompted for role, enter superadmin
python manage.py runserverAccess the application at: http://127.0.0.1:8000/
- Navigate to
/accounts/register/ - Fill in restaurant details (name, email, phone, address)
- Create account credentials
- Automatic slug generation from restaurant name
- Go to
/accounts/login/ - Enter credentials
- Redirects to
/dashboard/
- Navigate to Dashboard โ Categories
- Add categories (e.g., "Starters", "Main Course", "Desserts")
- Set display order (items will be sorted accordingly)
- Go to Dashboard โ Menu Items โ Add New Item
- Fill in details:
- Name, Description, Price
- Upload dish image (optional)
- Select category
- Mark as Vegetarian (checkbox)
- Set availability (default: available)
- From menu items list, click Toggle Availability button
- Instantly marks items as sold-out or available
- Updates reflect immediately on customer menu
- Navigate to Dashboard โ QR Code
- QR code auto-generated linking to
/menu/<your-restaurant-slug>/ - Download high-resolution QR code
- Print and display at tables, counter, or entrance
- Scan QR Code at restaurant (using phone camera)
- Browser opens menu automatically (no app install)
- Browse menu with categories, images, and prices
- Use filters:
- Search by dish name
- Filter by category
- Show only Veg/Non-Veg items
- Hide sold-out items
- Visual indicators: Green dot (veg), Red triangle (non-veg)
- Access
/superadmin/after logging in as superadmin - View all registered restaurants
- Toggle restaurant active/inactive status
- Delete restaurants (with confirmation)
- View platform statistics
Beautiful, modern landing page with clear call-to-actions and feature highlights.
Simple, streamlined registration process for restaurant owners.
Intuitive dashboard with menu management, analytics, and quick actions.
Auto-generated QR codes ready to download and print for table placement.
Mobile-optimized menu with beautiful dish images and clear pricing.
Advanced filtering by category, dietary preferences, and availability.
- Online Ordering โ Add to cart and place orders
- Payment Integration โ Razorpay/Stripe integration
- Multi-Language Support โ Hindi, Spanish, French menus
- Analytics Dashboard โ Track popular items, peak hours
- Table Management โ QR codes per table with table numbers
- Customer Reviews โ Rating and feedback system
- Allergen Information โ Tag items with allergen warnings
- Spice Level Indicators โ Mild, Medium, Hot labels
- Combo Offers โ Bundle pricing and meal deals
- Push Notifications โ Alert customers about new dishes
- WhatsApp Integration โ Order via WhatsApp Business API
- Dark/Light Theme Toggle โ User preference for menu theme
Detailed documentation is available for each module:
- Accounts Module โ User authentication, registration, and role management
- Restaurants Module โ Core business logic, menu management, QR generation
- Menu Module โ Public menu viewer for customers
- Super Admin Module โ Platform administration and management
- Core Module โ Landing page and shared utilities
We welcome contributions! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow PEP 8 style guide for Python code
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License โ see the LICENSE file for details.
Copyright (c) 2026 Sanchet Kolekar
If you find QRDine useful, please consider:
- โญ Starring this repository
- ๐ Reporting bugs or suggesting features via Issues
- ๐ Contributing to the codebase via Pull Requests
- ๐ฃ Sharing with restaurant owners who could benefit




