A Django-powered web application designed to simplify kitchen management processes in restaurants.
The application is deployed and available at: https://restaurant-kitchen-mitq.onrender.com
You can test the application using these demo credentials:
Preview of the application interface:
- Login: test
- Password: Test123123
- 🌐 Overview
- ✨ Features
- 💻 System Requirements
- 🔧 Environment Variables
- 🚀 Installation
- 📁 Project Structure
- 📚 API Documentation
- 🧪 Testing
Restaurant Kitchen Management System is a Django-powered application that simplifies kitchen management processes by providing functionality for managing dishes, chefs, and dish types. The application also supports user authentication and personalized dish assignments.
- 📊 Kitchen Statistics: View key kitchen metrics on the main dashboard.
- 🍽️ Dish Management: Create, view, update, and delete dishes.
- 🍳 Dish Type Management: Manage various types of dishes.
- 👨🍳 Chef Management: Add, view, update, and remove chefs.
- 🔄 User Assignment: Assign/unassign yourself to dishes.
- 🔒 Authentication: Login and logout functionality with secure access control.
- Python: 3.11 or newer
- PostgreSQL: 14 or newer
- Operating System: Compatible with Linux, macOS, and Windows
The project requires the following environment variables in a .env
file in the root directory:
- Create a .env file following the .env.sample template and replace with your values.
- Ensure that the .env file is not included in your version control system (e.g., Git) as it contains sensitive information.
-
Clone the repository:
git clone https://github.com/mshmygel/restaurant-kitchen.git cd restaurant_kitchen
-
Create and activate a virtual environment:
- Linux/Mac:
python3 -m venv venv source venv/bin/activate
- Windows:
python -m venv venv venv\Scripts\activate
- Linux/Mac:
-
Install dependencies:
pip install -r requirements.txt
-
Apply database migrations:
python manage.py migrate
-
Load sample data (optional): If you want to preload the database with test data:
python manage.py loaddata test_data.json
-
Create a superuser:
python manage.py createsuperuser
-
Run the development server:
python manage.py runserver
-
Access the application at:
accounts/
: Handles user management, including chefs and authentication.kitchen/
: Manages dishes, dish types, and kitchen statistics.templates/
: HTML templates for the frontend.static/
: Static files (CSS, JavaScript, images).
- Cook: Represents a chef in the kitchen.
- Dish: Represents a dish with details like name, type, price, and assigned chefs.
- DishType: Represents a category for dishes.
- Kitchen Views:
IndexView
: Displays kitchen statistics.DishListView
: Lists all dishes with search functionality.DishDetailView
: Shows detailed information about a dish.ToggleAssignToDishView
: Allows chefs to assign/unassign themselves to a dish.
- Accounts Views:
CookListView
: Lists all chefs.CookDetailView
: Shows detailed information about a chef.
Run automated tests using:
python manage.py test