A modern, real-time restaurant management system built for speed, efficiency, and reliability
π Quick Start β’ π Documentation β’ π οΈ Installation β’ π€ Contributing
F12KITCHEN is a comprehensive, enterprise-grade restaurant management system designed for fast-food and quick-service restaurants. Built with modern technologies including Django 5, WebSockets, and Redis, it provides real-time order management, kitchen display systems, and seamless point-of-sale operations.
- β‘ Real-time Operations: Instant order updates across all devices using WebSockets
- π₯ Multi-role Support: Cashiers, kitchen staff, managers, and directors with role-based access
- π¨οΈ Professional Receipt System: PDF generation with thermal printer support
- π± Responsive Design: Works perfectly on desktop, tablet, and mobile devices
- π Enterprise Security: Role-based authentication and secure data handling
- π Production Ready: Docker support, environment-based configuration
- Fast Order Entry: Intuitive interface for quick order processing
- Menu Management: Categories, items, pricing, and availability control
- Payment Processing: Multiple payment methods (cash, card, online)
- Receipt Generation: Professional PDF receipts with company branding
- Real-time Order Queue: Live updates without page refresh
- Order Management: Mark orders as in-progress, completed, or cancelled
- Visual Status Indicators: Color-coded order types and statuses
- Auto-refresh: Seamless WebSocket-based updates
- Sales Analytics: Real-time sales data and reporting
- User Management: Create and manage staff with role-based permissions
- Inventory Tracking: Monitor stock levels and low inventory alerts
- Advertisement System: Digital signage and promotional content
- WebSocket Communication: Real-time bidirectional communication
- Celery Task Queue: Background task processing for heavy operations
- Redis Caching: High-performance data caching and session management
- Docker Support: Containerized deployment for easy scaling
- API Integration: RESTful APIs for third-party integrations
| Backend | Frontend | Database | Infrastructure |
|
|
|
|
- Python 3.12+
- Redis Server
- PostgreSQL (optional, SQLite for development)
- Git
git clone https://github.com/your-org/F12KITCHEN.git
cd F12KITCHEN# Create virtual environment
python -m venv .venv
# Activate (Linux/Mac)
source .venv/bin/activate
# Activate (Windows)
.venv\Scripts\activatepip install -r requirements.txt# Copy environment template
cp .env.example .env
# Edit configuration
nano .env # or your preferred editor# Run migrations
python manage.py migrate
# Create superuser
python manage.py createsuperuser
# Load sample data (optional)
python manage.py loaddata sample_data.json# Terminal 1: Redis (if not running as service)
redis-server
# Terminal 2: Celery Worker
celery -A config worker -l info
# Terminal 3: Celery Beat
celery -A config beat -l info
# Terminal 4: Django Development Server
python manage.py runserver- Main Application: http://127.0.0.1:8000
- Admin Panel: http://127.0.0.1:8000/admin
- Kitchen Display: http://127.0.0.1:8000/kitchen
| Variable | Description | Default | Required |
|---|---|---|---|
SECRET_KEY |
Django secret key | - | β |
DEBUG |
Debug mode | False |
β |
ALLOWED_HOSTS |
Allowed hostnames | 127.0.0.1,localhost |
β |
DB_ENGINE |
Database engine | sqlite3 |
β |
DB_NAME |
Database name | db.sqlite3 |
β |
DB_USER |
Database user | - | β |
DB_PASSWORD |
Database password | - | β |
REDIS_HOST |
Redis hostname | 127.0.0.1 |
β |
REDIS_PORT |
Redis port | 6379 |
β |
EMAIL_HOST_USER |
SMTP username | - | β |
EMAIL_HOST_PASSWORD |
SMTP password | - | β |
# Build and run with Docker Compose
docker-compose up -d
# View logs
docker-compose logs -f# Install production dependencies
pip install gunicorn psycopg2-binary
# Collect static files
python manage.py collectstatic --noinput
# Run with Gunicorn
gunicorn config.wsgi:application --bind 0.0.0.0:8000| Role | Permissions | Access Level |
|---|---|---|
| π¨βπΌ Director | Full system access, reports, user management | π΄ High |
| π‘οΈ Admin | User management, menu, categories, orders | π‘ Medium |
| π° Cashier | Order processing, payments, receipts | π’ Standard |
| π¨βπ³ Cook | Kitchen display, order status updates | π’ Standard |
| π Courier | Delivery orders, status updates | π’ Standard |
| π¦ Storekeeper | Inventory management, stock levels | π’ Standard |
Real-time order management for kitchen staff
Fast and intuitive order entry system
Comprehensive analytics and reporting
# Run all tests
python manage.py test
# Run specific app tests
python manage.py test fastfood
# Run with coverage
coverage run --source='.' manage.py test
coverage report
coverage html# Login endpoint
POST /api/auth/login/
Content-Type: application/json
{
"username": "your_username",
"password": "your_password"
}# Get orders
GET /api/orders/
# Create order
POST /api/orders/
Content-Type: application/json
{
"items": [
{"menu_id": 1, "quantity": 2},
{"menu_id": 3, "quantity": 1}
],
"order_type": "dine-in"
}# Format code with Black
black .
# Lint with Ruff
ruff check .
# Type checking with MyPy
mypy .# Create migrations
python manage.py makemigrations
# Apply migrations
python manage.py migrate
# Show migration status
python manage.py showmigrations# Delete unverified users
python manage.py delete_unverified_users
# Generate sample data
python manage.py seed
# Import menu from CSV
python manage.py import_menu menu.csv# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
environment:
- DEBUG=False
- SECRET_KEY=your-secret-key
depends_on:
- db
- redis
db:
image: postgres:15
environment:
POSTGRES_DB: f12kitchen
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
redis:
image: redis:7-alpineserver {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /ws/ {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}We welcome contributions! Please see our Contributing Guide for details.
- 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
- Follow PEP 8 style guide
- Write comprehensive tests
- Update documentation for new features
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Email: support@f12kitchen.com
- Website: https://f12kitchen.com
- Documentation: https://docs.f12kitchen.com
Please use our Issue Tracker to report bugs.
- Telegram: @f12kitchen
- Discord: F12Kitchen Community
- Django community for the excellent framework
- Redis team for high-performance caching
- TailwindCSS for modern styling utilities
- All contributors who help improve this project
Made with β€οΈ by the F12KITCHEN Team
β Star this repo if you find it useful! β