A comprehensive McDontald's kiosk simulator featuring interactive ordering, multiplayer gaming, and administrative management.
McKiosk is a full-stack web application that recreates the McDontald's self-service kiosk experience. It combines a complete ordering system with real-time multiplayer gaming and administrative tools.
| Feature | Description |
|---|---|
| Ordering System | Browse menu categories, add items to cart, and complete checkout |
| Snake Game | Single-player and multiplayer modes with global leaderboard |
| Admin Panel | Manage menu items, prices, stock status, and view orders |
| Real-time Gaming | WebSocket-powered multiplayer Snake with game codes |
| Responsive Design | Optimized for desktop, tablet, and mobile devices |
- Flask - Python web framework
- SQLAlchemy - Database ORM
- PostgreSQL - Primary database for orders, menu items, and game scores
- Redis - Game session management and caching
- Flask-SocketIO - WebSocket support for real-time multiplayer
- HTML5/CSS3 - Responsive design with McDontald's branding
- JavaScript ES6+ - Modern JavaScript with async/await
- WebSocket - Real-time communication for multiplayer gaming
- LocalStorage - Client-side cart persistence
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Flask App │ │ Databases │
│ (Browser) │◄──►│ (Python) │◄──►│ PostgreSQL │
│ │ │ │ │ Redis │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Python 3.7+
- PostgreSQL 13+
- Redis 6.0+
-
Clone and setup
git clone https://github.com/your-username/mckiosk.git cd mckiosk python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Setup database
createdb kiosk_db psql -c "CREATE USER kiosk_user WITH PASSWORD 'mcdonalds123';" psql -c "GRANT ALL PRIVILEGES ON DATABASE kiosk_db TO kiosk_user;"
-
Start Redis
redis-server
-
Run the application
python app.py
The application will be available at http://localhost:5002
- The app automatically creates database tables and sample menu data
- Visit
/adminto manage menu items and view orders - Visit
/gameto test the Snake game functionality
Landing Page → Order Type → Menu Browse → Cart → Checkout → Order Complete
↓
Snake Game → Leaderboard
| Route | Description | Features |
|---|---|---|
/ |
Landing page | Welcome screen, app preview |
/dinein |
Order type selection | Dine-in vs Takeaway options |
/menu |
Menu browsing | Category filtering, product details |
/checkout |
Checkout process | Order review, payment selection |
/game |
Snake game | Solo/multiplayer modes, leaderboard |
/admin |
Admin panel | Menu management, order tracking |
| Model | Purpose | Key Fields |
|---|---|---|
| Category | Menu categories | name, icon, slug |
| MenuItem | Individual products | name, price, description, category_id |
| Order | Customer orders | order_number, items, total, status |
| GameData | High scores | player_name, score, created_at |
| GameSession | Multiplayer games | game_code, host_name, guest_name |
- Sandwiches & Meals (Big Mac, Quarter Pounder, Cheeseburger)
- McNuggets & Meals (4, 9, 20 piece options)
- Fries (Small, Medium, Large)
- Happy Meals (4 Nuggets, Hamburger)
- Sweets & Treats (McFlurry, Apple Pie, Cookies)
- McCafé Coffees (Latte, Cappuccino, Americano)
- Beverages (Coca-Cola, Sprite, Orange Juice)
- Menu Browsing: Category-based navigation with visual product cards
- Cart Management: Add/remove items, quantity controls, persistent storage
- Checkout Process: Order review, payment method selection, order confirmation
- Order Tracking: Unique order numbers, database storage, admin visibility
- Solo Play: Single-player Snake game with local high score tracking
- Multiplayer: Real-time multiplayer with 6-digit game codes
- Leaderboard: Global high score tracking with player names and dates
- Game Sessions: Redis-based session management with automatic cleanup
- Menu Management: Add/edit menu items, update prices, toggle stock status
- Order Monitoring: View all orders, track order status, order history
- Game Analytics: View high scores, player statistics
- System Control: Database management, session monitoring
- Chrome 60+ (Full support)
- Firefox 55+ (Full support)
- Safari 12+ (Full support)
- Edge 79+ (Full support)
- Mobile: iOS Safari 12+, Chrome Mobile 60+
mckiosk/
├── app.py # Main Flask application
├── game_manager.py # Game session management
├── models.py # Database models
├── requirements.txt # Dependencies
├── templates/ # HTML templates
├── static/ # CSS, JS, assets
└── README.md # Documentation
flask- Web frameworkflask-sqlalchemy- Database ORMflask-socketio- WebSocket supportredis- Session managementpsycopg2-binary- PostgreSQL adapter
This project is created for educational purposes as part of the KdG Integration Project.
Note: This is a simulation/replica and is not affiliated with McDontald's Corporation.