Cross-platform mobile product · Healthcare scheduling
Mawed v2 · مواعد
Mawed connects two distinct mobile journeys around one appointment: a Doctor publishes a weekly schedule and a Patient discovers the clinic through a private code, selects an available slot and follows the booking decision. Built as independent product development, it brings role-specific UX and appointment states into one Flutter app.
- Flutter
- Two-sided workflow
- Clinic-code discovery

- Role
- Product Software Engineer
- Context
- Independent product development
- Period
- 2025
- Platform
- Cross-platform mobile product
- Stack
- Flutter · Dart
A two-sided product
Mawed treats Doctor and Patient as two different product journeys joined by the same appointment record. The Doctor controls schedule and availability; the Patient needs a direct path to one clinic, a clear set of slots and a status that reflects the Doctor's decision.
Designing the two sides together matters because each action changes what the other person can see or do next. The value lies in the lifecycle between them, not in two disconnected screen sets.
Discovery by private clinic code
Instead of a public directory, a Doctor deliberately shares a private clinic code, which is also available as a QR code. The Patient uses it to find the intended clinic and continue to available days and slots. This keeps discovery focused on the Doctor–Patient relationship.
One appointment, two people
The Doctor defines working days, hours and appointment duration, then shares the clinic code. The Patient selects an available slot and submits a booking request. The Doctor accepts or declines it; the Patient follows pending, accepted or declined booking states.
A pending-Doctor gate prevents access to the active Doctor workflow until approval.
One Flutter codebase, two roles
Mawed is built with Flutter and Dart. One codebase carries both the Doctor and Patient journeys, so each role gets its own mobile interaction without splitting the product into unrelated implementations.
The appointment lifecycle in screens
The screens follow clinic-code discovery, slot selection and request review, then the Doctor's day and a pending-request decision. The review screen precedes submission; it is not a confirmed appointment.
Figures

Discover the intended clinic using the privately shared code. 
Choose an available slot from the Doctor's schedule. 
Review the request before sending; confirmation still depends on the Doctor's decision. 
Doctor Today distinguishes confirmed appointments from a request needing a decision. 
Accept or decline the pending appointment request.
Launch the mobile demo
Follow private clinic-code discovery and booking as a Patient, then inspect the Doctor's schedule and appointment decision.
The demo uses fictional data and does not connect to any production system.