Skip to content

About

This is a Django REST Framework backend developed as part of Meta’s APIs course. It provides a RESTful API for a fictional restaurant, allowing clients to manage menu items, make and view table bookings, and authenticate users with role-based access. (2026)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

🍋 Little Lemon API

The Little Lemon API is a Django REST Framework backend developed as part of Meta's APIs course. It provides a RESTful API for a fictional restaurant, allowing clients to manage menu items, shopping carts, orders, and user roles. The project uses Django, Django REST Framework, a relational database, serializers, viewsets, permissions, filtering, and token-based authentication to demonstrate how to build and secure production-style web APIs.

(2026)


🔐 User Authentication

  • POST /api/users - Register a new user
  • GET /api/users/users/me/ - Retrieve the authenticated user's profile
  • POST /token/login/ - Generate an authentication token

🍽️ Menu Items

Customer / Delivery Crew

  • GET /api/menu-items - List all menu items
  • GET /api/menu-items/{menuItem} - Retrieve a specific menu item

Manager

  • GET /api/menu-items - List all menu items
  • POST /api/menu-items - Create a menu item
  • GET /api/menu-items/{menuItem} - Retrieve a specific menu item
  • PUT /api/menu-items/{menuItem} - Update a menu item
  • PATCH /api/menu-items/{menuItem} - Partially update a menu item
  • DELETE /api/menu-items/{menuItem} - Delete a menu item

Additional Capabilities

  • Filtering
  • Searching
  • Sorting
  • Pagination

👥 User Group Management

Managers Only

  • GET /api/groups/manager/users - List all managers
  • POST /api/groups/manager/users - Assign a user to the manager group
  • DELETE /api/groups/manager/users/{userId} - Remove a user from the manager group
  • GET /api/groups/delivery-crew/users - List all delivery crew
  • POST /api/groups/delivery-crew/users - Assign a user to the delivery crew group
  • DELETE /api/groups/delivery-crew/users/{userId} - Remove a user from the delivery crew group

🛒 Cart Management

Customers

  • GET /api/cart/menu-items - View the current user's cart
  • POST /api/cart/menu-items - Add a menu item to the cart
  • DELETE /api/cart/menu-items - Clear the current user's cart

📦 Order Management

Customers

  • GET /api/orders - View the customer's orders
  • POST /api/orders - Place an order from the current cart
  • GET /api/orders/{orderId} - View a specific order

Managers

  • GET /api/orders - View all orders
  • PUT /api/orders/{orderId} - Update an order, including assigning delivery crew and order status
  • PATCH /api/orders/{orderId} - Partially update an order
  • DELETE /api/orders/{orderId} - Delete an order
  • Filtering by order status
  • Sorting and pagination

Delivery Crew

  • GET /api/orders - View orders assigned to the delivery crew member
  • PATCH /api/orders/{orderId} - Update order delivery status

⚙️ API Features

  • 🔑 Token-based authentication
  • 👥 Role-based permissions for Managers, Customers, and Delivery Crew
  • 🚦 API throttling: 5 requests per minute
  • 🔎 Filtering and searching
  • ↕️ Sorting and pagination
  • 📋 Appropriate HTTP status codes
  • 🌐 RESTful GET, POST, PUT, PATCH, and DELETE operations

About

This is a Django REST Framework backend developed as part of Meta’s APIs course. It provides a RESTful API for a fictional restaurant, allowing clients to manage menu items, make and view table bookings, and authenticate users with role-based access. (2026)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages