Mawid — Medical Appointment System
A medical appointment system connecting administrators, doctors and patients.
One platform for patients, doctors and admins
Unified booking
JWT authentication with role-based permissions
Secure access
Living OpenAPI docs via drf-spectacular
Documented API
Mawid is a full-stack medical appointment management platform connecting administrators, doctors and patients — booking, doctor and patient management, authentication, cloud media handling and a documented REST API.
Medical appointments get booked across phones, paper ledgers and chat messages. Clinics lose time reconciling schedules, patients double-book or miss slots, and doctors have no single view of their day.
A React SPA over a monolithic Django REST API. Patients book available slots, doctors manage their schedules, and administrators run the practice — backed by PostgreSQL, JWT authentication, Cloudinary for media and drf-spectacular for living API documentation.
Mawid was built as a team project during ITI training. The repository is owned by a team member (Eng-Ayman-Mohamed). Mostafa's work focused on the full-stack engineering documented here — the Django REST backend, JWT authentication, role-based access and the React/TypeScript frontend.
How data moves through the system.
Monolithic Django REST API plus a separate React SPA, with external services for media and email.
- 01React SPA
- 02Django REST API
- 03PostgreSQL
- 04Cloudinary (media)
- 05django-anymail (email)
- 01Medical appointment booking
- 02Doctor management
- 03Patient management
- 04Administrative functionality
- 05JWT authentication
- 06Cloud media handling (Cloudinary)
- 07Email notifications (django-anymail)
- 08API documentation (drf-spectacular)
One platform for patients, doctors and admins
Unified booking
JWT authentication with role-based permissions
Secure access
Living OpenAPI docs via drf-spectacular
Documented API
Uploads handled through Cloudinary
Cloud media
PostgreSQL schema for users (admin, doctor, patient), appointments, schedules and media metadata, managed with Django migrations.
Django REST Framework endpoints for appointments, doctors, patients and administration, secured with JWT and documented with drf-spectacular.
Cloudinary handles image and document uploads so the API never stores binary files locally; django-anymail sends transactional email.
JWT authentication and per-role permissions keep patient data isolated between admin, doctor and patient accounts.
Django tests and pytest for the API, with Ruff for linting and formatting.
- Modelling availability so a doctor's schedule and a patient's booking stay consistent.
- Enforcing role boundaries between administrators, doctors and patients in one codebase.
- Keeping media uploads out of the application server while preserving quick load times.
- Authentication and authorisation are the first thing to design, not the last.
- A documented API is a product feature — drf-spectacular pays for itself immediately.