LittleLemon is a full-stack restaurant management system built as a Coursera capstone project. It provides a web interface for restaurant operations including menu management, table booking, and user authentication — powered by Django and the Django REST Framework.
| Feature | Description |
|---|---|
| 🍽️ Menu Management | Full CRUD for restaurant menu items with pricing and inventory tracking |
| 📅 Table Booking | Customer booking system with guest count and date/time management |
| 🔐 User Authentication | Token-based auth with user registration and permissions |
| 📊 RESTful API | Expose menu, bookings, and users via DRF endpoints |
| 🖥️ Admin Dashboard | Django admin interface for staff management |
Backend Django 5.2 · Django REST Framework · Python 3.x
Database SQLite (dev) · Django ORM
Authentication Django Auth · Token-based API auth
Serialization ModelSerializers for Booking, Menu, User
Testing Django TestCase · DRF API TestCase
┌─────────────────────────────────────────────────────────┐
│ Client (Browser) │
└─────────────────────┬───────────────────────────────────┘
│ HTTP / AJAX
▼
┌─────────────────────────────────────────────────────────┐
│ Django Application (LittleLemon) │
│ ┌────────────┐ ┌────────────┐ ┌──────────────────┐ │
│ │ Templates │ │ URLs │ │ DRF Serializers │ │
│ │ (HTML/CSS) │ │ /menu/ │ │ MenuSerializer │ │
│ │ │ │ /booking │ │ BookingSerializer│ │
│ │ │ │ /api/ │ │ UserSerializer │ │
│ └────────────┘ └─────┬──────┘ └────────┬─────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ Django ORM / Models │ │
│ │ Booking · Menu · MenuItem · User │ │
│ └──────────────┬───────────────────┘ │
└─────────────────────────────┼───────────────────────────┘
│
▼
┌──────────────────┐
│ SQLite DB │
│ (db.sqlite3) │
└──────────────────┘
- Python 3.x
- pip (Python package manager)
- Virtual environment (recommended)
# 1. Clone the repository
git clone https://github.com/sorisk3-git/Capstone-project.git
cd Capstone-project/LittleLemon
# 2. Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Configure environment (optional — defaults work for SQLite)
cp ../.env.example ../.env # Edit if using MySQL
# 5. Run database migrations
python manage.py migrate
# 6. Create a superuser (admin)
python manage.py createsuperuser
# 7. Start the development server
python manage.py runserverVisit http://localhost:8000 in your browser.
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET/POST | /menu-items/ |
List / create menu items | ✅ |
| GET/PUT/DELETE | /menu-item/<id> |
Retrieve / update / delete menu item | ✅ |
| GET/POST | /booking/tables/ |
List / create bookings | ✅ |
| GET/PUT/DELETE | /booking/tables/<id> |
Retrieve / update / delete booking | ✅ |
| POST | /api-token-auth |
Obtain authentication token | ❌ |
| GET | /message/ |
Protected test endpoint | ✅ |
- Building RESTful APIs with Django REST Framework
- Model serialization and validation patterns
- Token-based authentication workflows
- Django ORM query optimization
- Test-driven development with Django's test suite
- Handling merge conflicts in collaborative workflows
This project is licensed under the MIT License — see the LICENSE file for details.
Built as part of the Coursera Django Backend Specialization
© 2025 · SoRisk3