Marketplace product · Doctor Booking & Online Consultation Platform

Medist

A bilingual doctor-booking and online-consultation platform with a public site and three panels (patient, doctor and admin), shipped as a self-hosted product that installs on shared hosting.

My role
Took over and rebuilt: redesign, booking engine, video visits, integrations, release
Year
2026
Built with
Next.js 14 · React & TypeScript · Laravel · MySQL
Medist

By the numbers

  • 3 Role-based panels
  • 41 App pages
  • 51 Database tables
  • 3 SMS providers
01

The Challenge

I inherited a half-finished Next.js frontend from another developer and a purchased Laravel backend. Neither was ready to sell: Persian and Jalali support had gaps, payment code targeted gateways Iranian users can't use, and the online-visit feature was hardwired to a single domain.

The product also had to run on ordinary shared hosting with no Node.js, because that is what its buyers have.

02

The Approach

I redesigned every screen around one design system and made the whole app bilingual with Jalali dates throughout. I rebuilt the booking engine around weekly schedules, exceptions and slot lengths, and built online visits from scratch: in-app chat plus WebRTC voice and video calls with ICE restart, rejoin and a TURN server.

The frontend became a static export served by Laravel, with configuration injected at runtime so one build works on any domain. I also added Zarinpal and a wallet, three SMS providers, a web installer and a security pass covering ownership checks, rate limits and upload sniffing.

03

The Outcome

Version 1.0.0 shipped as a complete marketplace package with a web installer, a Persian guide and a full screenshot set. Patients book, pay and visit online. Doctors manage schedules, earnings and articles. Admins approve doctors, handle payouts and configure SMS, payments and branding without touching code.

What I built

  • Three panels: patient, doctor and admin, plus a public site with doctor search

  • Booking engine: weekly schedules, exceptions and a Jalali slot picker

  • Online visits: chat plus WebRTC voice and video with TURN and auto-rejoin

  • Zarinpal and wallet checkout with coupons; three SMS providers for OTP

  • Static Next.js build served by Laravel, so no Node.js is needed on the host

  • Web installer, runtime branding and a security hardening pass

Gallery

Built with

Next.js 14 React & TypeScript Laravel MySQL WebRTC Tailwind CSS Zarinpal