Mawid

The front desk that never closes.

An Arabic-first booking page, WhatsApp reminders and one live schedule for your clinic or salon.

Book as a patient
A hand writes on a paper appointment card next to Arabic coffee and dates.

Most clinics still book on paper and phone calls.

Every visit is a call, a line in the book, and a reminder somebody has to remember to send. Mawid moves all three onto one link your patients already know how to use.

  1. 01

    Share one link

    In your Instagram bio, WhatsApp profile and Google Maps.

  2. 02

    They book in a minute

    Real free times, in Arabic or English, held while they type.

  3. 03

    Mawid does the rest

    Confirmation and reminders on WhatsApp, straight onto your schedule.

A booking page patients finish, not abandon.

It opens in Arabic, right to left, with English one tap away. Every time shown is genuinely free: hours, breaks, time off and cleaning gaps are already taken into account. Try the one on the right.

Held while they type
The time is reserved for five minutes so nobody else takes it mid-booking.
Change it themselves
Every confirmation has a link to move or cancel, inside your policy.
One link per service
Send whitening patients straight to whitening.
Calendar ready
Add to Apple or Google Calendar in one tap.
N

عيادة نور لطب الأسنان

فحص وتنظيف، 45 دقيقة، 250 د.إ.

نوفمبر 2026

الصباح

الظهر

المساء

اختر الوقت اللي يناسبك

متابعة
A man in a parked car at dusk glances at his phone.
تذكير بموعدك في عيادة نور لطب الأسنان: فحص وتنظيف، الخميس، 29 أكتوبر الساعة 4:30 م. لو محتاج تغيّر الميعاد: mawid-bay.vercel.app/m/7x97qh9:02

Reminders go out on their own, in their language.

A confirmation the moment someone books. A reminder the day before and another on the day. If they move or cancel, they hear about it too. Arabic for patients who booked in Arabic, English for the rest.

Hi James, your booking at Noor Dental Clinic is confirmed ✅ Teeth whitening with Dr. Karim Youssef Thursday 29 October at 16:30 Change or cancel: mawid-bay.vercel.app/m/7x97qhTue 18:40

Every message is kept in the outbox, so the front desk can see exactly what a patient was sent.

Every chair on one live schedule.

Online, phone and walk-in bookings land in the same place, with a line for the current time. One tap marks a visit attended or missed, and the numbers add themselves up.

The Today screen: a timeline of appointments for three team members, with day totals above.
A barber trims a client's beard in a Riyadh barbershop.
Barbers and salons: one link for every chair.
An empty clinic waiting area with sunlight through a mashrabiya screen.
Clinics: fewer calls at the desk, fewer empty chairs.

Under the hood

Next.js 16, React 19 and Postgres with Drizzle. The front-desk assistant answers in English and Arabic from the live schedule, and changes nothing until the owner confirms. The database enforces the rules; the tests run against a real Postgres engine.

Read the source
Overlaps are impossible, not unlikely
A Postgres exclusion constraint on each staff member's time range rejects any overlapping booking. A test fires five holds at the same slot at once and checks that exactly one wins.
Holds instead of race conditions
Choosing a time creates a short-lived hold. Expired holds are cleared only when someone else needs the time, so a slow patient can still confirm if nobody took it.
Reminders that send once
Each reminder is claimed with a conditional update before it is sent, so overlapping runs never message a patient twice.
Time zones done properly
Times are stored in UTC and computed in the business's own zone. Calendar days stay plain dates, so nothing drifts on a server elsewhere.
A bright dental treatment room with a view of palm trees.

See it from both sides of the desk.

Book as a patient