A full-stack medical appointment booking platform built with Django — featuring real-time booking status updates via WebSocket, Celery background tasks, JazzCash payment integration, social authentication, and dual-role dashboards for patients and doctors.
- ✅ User registration & login
- 🔐 Password reset via email
- 🌐 Google / Social authentication
- 🩺 Browse doctors by specialty (Healthcare, Beauty, Personal Trainer)
- 📅 Book appointments with available time slots
- 💳 JazzCash payment gateway integration
- 📊 Personal appointments dashboard
- ♻️ Cancel appointments
- 👤 Profile settings & password change
- 🔐 Separate instructor login & registration
- 📊 Instructor dashboard
- 🗓️ Manage available timings
- 📋 View & manage patient appointments
- ✅ Confirm / cancel appointments (live via WebSocket)
- 👤 Profile info & settings management
- ⚡ Real-time booking status updates (Django Channels + WebSocket)
- 📧 Background email notifications (Celery + Redis)
- ⏰ Scheduled reminder tasks (Celery Beat)
- 🔔 Django Signals for automated triggers
- 🛡️ reCAPTCHA form protection
- 🌐 Social auth pipeline (Google login)
- 🎨 Bootstrap-based responsive UI
| Category | Technology |
|---|---|
| Backend | Django 5.0 |
| Real-time | Django Channels, WebSocket, Daphne (ASGI) |
| Background Tasks | Celery 5.4, Celery Beat |
| Message Broker | Redis |
| Database | SQLite (dev) / MySQL (prod) |
| Authentication | Django Auth, SimpleJWT, Social Auth (Google) |
| Payment | JazzCash Payment Gateway |
| Frontend | Bootstrap 5, HTML, CSS, JavaScript |
| Forms | Django Crispy Forms, reCAPTCHA |
| Django Email + Celery async delivery |
appointment-project/
│
├── appointBooking/ # Core booking logic
│ ├── consumers.py # WebSocket consumers (real-time updates)
│ ├── routing.py # WebSocket URL routing
│ ├── signals.py # Django signals (auto-triggers)
│ ├── tasks.py # Celery background tasks
│ ├── models.py # Appointment models
│ ├── views.py # Booking views
│ └── templates/ # Booking HTML templates
│
├── authentication/ # Auth system
│ ├── backends.py # Custom authentication backends
│ ├── pipeline.py # Social auth pipeline (Google)
│ ├── views.py # Login / Register / Password reset
│ └── templates/ # Auth HTML templates
│
├── core/ # Patient-facing app
│ ├── views.py # Home, healthcare listing, user dashboard
│ ├── decorators.py # Custom access decorators
│ └── templates/ # Patient UI templates
│
├── instructors/ # Doctor dashboard app
│ ├── views.py # Doctor dashboard, timings, appointments
│ ├── decorators.py # Doctor-only access control
│ └── templates/ # Doctor UI templates
│
├── appointment/ # Django project config
│ ├── settings.py # Settings (dev/prod)
│ ├── celery.py # Celery app configuration
│ ├── asgi.py # ASGI config (WebSocket + HTTP)
│ └── urls.py # Root URL configuration
│
├── static/ # CSS, JS, images
├── media/ # User uploaded files
├── templates/ # Base templates
├── .env.example # Environment variables template
├── requirements.txt # Python dependencies
└── manage.py
---
## 🚀 Local Setup
### 1. Clone & Install
```bash
git clone https://github.com/UMAR010FAROOQ/appointment-project.git
cd appointment-project
pip install -r requirements.txt
cp .env.example .env
# Edit .env with your DB, Redis, and email credentialspython manage.py migrate
python manage.py createsuperuserredis-servercelery -A appointment worker --loglevel=infocelery -A appointment beat --loglevel=infopython manage.py runserverDoctor confirms appointment ↓ Django Signal fires ↓ WebSocket message sent via Django Channels ↓ Patient's browser receives live status update ↓ No page refresh needed ✅
Appointment booked ↓ Celery task queued in Redis ↓ Email confirmation sent to patient (async) ↓ Celery Beat triggers reminder 24hrs before appointment
| Role | Access |
|---|---|
| Patient | Browse doctors, book, pay, manage appointments |
| Doctor | Manage availability, confirm/cancel appointments |
| Admin | Full Django admin access |
Umar Farooq — Backend Developer (Django / DRF)










