A full‑featured Django web application for managing a restaurant kitchen: cooks, dishes, ingredients, and dish types — all wrapped in a clean UI with authentication, search, CRUD operations, and image uploads.
This project demonstrates solid Django architecture, class‑based views, custom user models, form handling, media management, and admin customization.
🔗 Render Deployment:
Restaurant Mate project is deployed to Render
Test User Credentials
login: user
password: user12345
- Custom Cook model extending AbstractUser
- Automatic unique slug generation for profile URLs
- Profile pictures upload with validation
- Login, logout, and registration
- Permissions integrated with Django Admin
- Create, update, delete dishes
- Assign cooks to dishes (toggle assign)
- Add ingredients and dish types
- Image upload for dishes
- Price validation with DecimalValidator
- Full CRUD for ingredients and dish types
- Search functionality for all list views
- Pagination across all list views
- Search forms for cooks, dishes, dish types, ingredients
- Recently updated dishes on the homepage
- Previous URL middleware for improved navigation
- Custom admin for Cook, Dish, DishType, Ingredient
- Read‑only slug field
- Extended fieldsets for additional cook info
- Class‑based views everywhere
- Reusable forms and mixins
- Clean URL structure with namespaces
- Debug Toolbar integration
- Media file support
restaurant_mate/
│
├── kitchen/
│ ├── models.py # Cook, Dish, Ingredient, DishType
│ ├── views.py # All CBVs + toggle assign
│ ├── forms.py # Creation/update/search forms
│ ├── urls.py # App routes
│ ├── admin.py # Admin customization
│ ├── templatetags/ # query_transform tag
│ └── templates/ # HTML templates
│
├── restaurant_mate/
│ ├── settings.py
│ ├── urls.py # Project routes
│ └── middleware.py # StorePreviousURLMiddleware
│
├── media/ # Uploaded images
├── static/ # Static files
└── README.md
| Component | Version |
|---|---|
| Python | 3.12.2 |
| Django | 5.0.7 |
| Pillow | 10.4.0 |
| Django Debug Toolbar | Enabled |
| Render | Deployment |
Make sure Python 3.12+ is installed.
Python 3 must be preinstalled.
git clone https://github.com/dkibalenko/restaurant-mate
cd restaurant-mate
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
Visit the app at: 👉 http://localhost:8000/
This project uses ImageField for:
- Cook profile pictures
- Dish images
Each list view includes a search bar:
- Cooks → search by username
- Dishes → search by name
- Dish Types → search by name
- Ingredients → search by name
- Search queries persist thanks to the custom query_transform template tag.
✔️ Unique Slug Generation for Cooks Automatically regenerates slug when first/last name changes.
✔️ Toggle Assign Cook to Dish Simple POST‑based toggle without extra forms.
✔️ Previous URL Middleware Stores HTTP_REFERER for improved navigation.
✔️ Prefetch Optimization Dish list and index views use prefetch_related("ingredients").
-
Fork the repository
-
Create a feature branch
git checkout -b feature/my-feature- Commit your changes
git commit -am "Add my feature"- Push the branch
git push origin feature/my-feature- Open a Pull Request
