You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A production-style Queue Management REST API built with Django REST Framework. This system allows organizations to manage departments, counters, queues, and customer tickets efficiently.
What is Easy Queue?
Easy Queue is a backend API system that digitizes the physical queue/token system used in banks, hospitals, government offices, and service centers. Customers take a ticket, wait for their number to be called, and get served at a counter.
Roles
Role
Description
ADMIN
Full access. Can create/update/delete departments, counters, queues. Can manage users.
STAFF
Can serve, complete, skip, and cancel tickets. Cannot manage departments or counters.
CUSTOMER
Can register, take a ticket, and view queue status.
What Each Role Can Do
Admin
Create, update, delete Departments
Create, update, delete Counters
Create, update, delete Queues
View all tickets and their history
Manage all users
View all notifications
Staff
View departments, counters, queues
Serve a ticket (assign to counter)
Complete a ticket
Skip a ticket
Cancel a ticket
View queue history
Customer
Register an account
Login and get JWT token
Take a ticket from a queue
View their ticket status
View their notifications
How The Queue Process Works
1. Admin creates a Department (e.g. Finance)
2. Admin creates a Counter under that Department (e.g. Counter 1)
3. Admin creates a Queue under that Department (e.g. Finance Queue)
4. Customer registers and logs in
5. Customer takes a ticket → system auto-generates ticket number (A001, A002...)
6. Staff calls next ticket → ticket status changes to SERVING
7. Staff completes the ticket → ticket status changes to COMPLETED
8. Every status change is recorded in Queue History
Tech Stack
Technology
Purpose
Python
Programming language
Django 6.0.6
Web framework
Django REST Framework
API layer
PostgreSQL
Database
JWT (SimpleJWT)
Authentication
django-filter
Filtering
Project Structure
easy_queue/
│
├── config/
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
│
└── apps/
├── accounts/ # User model, registration, profile
├── department_app/ # Department management
├── counter_app/ # Counter management
├── queue_app/ # Queue, Ticket, Queue History
├── notification_app/ # User notifications
└── common/ # Shared base model
Docker — Containerize the application with Docker and docker-compose for easy deployment
Celery — Async task queue for background jobs (sending emails, processing notifications)
Redis — Message broker for Celery and caching layer for frequently accessed data
🟡 Medium Priority
Swagger/OpenAPI — Auto-generated API documentation UI
Email Notifications — Send email when ticket is called via Celery
Unit Tests — Full test coverage for services, selectors, and APIs
Real-time Updates — Django Channels + WebSocket for live queue status
🟢 Nice To Have
Rate limiting per endpoint — Custom throttling for specific APIs
Token Authentication — Alternative to JWT for learning purposes
Deployment — Deploy to Railway or Render with PostgreSQL
License
MIT License
About
A production-grade Django REST Framework backend for digitizing physical queue systems, featuring automated ticket generation and a clean Service/Selector architecture.