Write us on Telegram@Odilient

WEB PLATFORM

WClinic

Online booking for a Saint Petersburg clinic network: a middleware API over the clinic CRM, multi-clinic scheduling and reminders via Telegram, WhatsApp and SMS.

WClinic
Client
Healthcare
Industry
6 months + ongoing support
Duration
2022
Year
Where it started

The Challenge

WClinic ran its patient site on an unstable legacy codebase with no documented way to deploy it. The clinic network needed online booking across its clinics, connected to the CRM its staff already used, and appointment reminders that reach patients on the messenger they actually use. None of that could ship safely until production itself was reproducible.

What we did

The Solution

We restored and containerized the environment first, then moved the codebase to Git with CI. On that foundation we built a middleware API between the website and the clinic CRM to hold the booking logic the CRM lacked. We added a multi-clinic booking dashboard for patients and administrators, and a reminder service that tries Telegram first, falls back to WhatsApp and ends with SMS.

Built with
Laravel 8Yii2Vue.js 2Nuxt.jsMySQLDockerTelegram Bot APIWhatsApp APISMS API
Inside the build

How It Came Together

Online booking and CRM integration for a clinic network

WClinic is an evidence-based medicine clinic in Saint Petersburg, with a children's clinic under its own site, wdeti.pro. Patients book visits online, and clinic staff work in a CRM. Our job was to connect the two with a multi-clinic appointment booking system that works through the CRM, plus reminders that reach patients on Telegram, WhatsApp or SMS.

The engagement ran for six months of active development, followed by ongoing support. We led it as a five-person team: a team lead and four full-stack developers.

Key features

  • Multi-clinic online booking: appointments for every clinic in the network go through one booking system instead of a separate setup per clinic.
  • CRM integration layer: a middleware API sits between the public site and the clinic CRM, so the website never depends on CRM internals directly.
  • Conflict handling across branches: booking rules the CRM did not provide live in the middleware, including resolving scheduling conflicts between branches.
  • Booking dashboard: one interface for patients and clinic administrators to manage appointments across clinics.
  • Multi-channel appointment reminders: Telegram first, then WhatsApp, then SMS, so a reminder still arrives when a patient doesn't use a given messenger.
  • SEO and accessibility work: improvements on the patient-facing pages people reach from search.
  • Reproducible deployments: a containerized environment and Git-based CI in place of hand-made releases.

Stabilizing a legacy clinic website first

When we joined, the existing site was unstable and effectively undeployable, because nobody could say exactly how production was put together. Building booking features on top of that would only have added risk, so stabilization came first.

We restored a working environment and containerized it with Docker, which gave every developer and every server the same runtime. The codebase moved into Git with a CI pipeline, and releases stopped depending on manual steps. Feature work started only once a release could be reproduced.

Architecture and tech stack

Middleware API over the clinic CRM

The clinic CRM stays the system of record for schedules and patients, but it did not cover all the business logic online booking needs. Patching that logic into the CRM or burying it in the website would have made both harder to change. We put it in a dedicated middleware API instead. The website and dashboard call the middleware, which applies the booking rules and exchanges data with the CRM. That boundary keeps CRM-specific details in one integration point.

Backend and frontend

The platform is split into services built on Laravel 8 and Yii2 with MySQL. The patient-facing and admin interfaces use Vue.js 2 and Nuxt.js. Everything runs in Docker containers, so what passes CI is what gets deployed.

Reminder delivery with fallback

A missed appointment leaves an empty slot another patient could have used. Reminders are how a clinic fights no-shows, but only if they reach the patient. Our reminder logic works as a fallback chain: it tries Telegram, falls back to WhatsApp when Telegram can't deliver, and uses SMS as the last resort. The clinic doesn't have to pick one channel for every patient.

Our role

We filled the team lead role on a five-person team for the initial six-month modernization. That covered stabilizing and containerizing the environment, setting up Git and CI, designing the middleware API over the CRM, and shipping the booking dashboard and reminder logic. After that, the engagement continued as ongoing support. The clinic's website is wclinic.pro.

For another appointment booking product, see Bronjoy, our booking marketplace for Uzbekistan. For another team-lead engagement, see Moydom, a smart-city platform. We build systems like this through our web app development service, and messenger-based booking and reminder flows through Telegram bot development.

Let's Build

Want something like WClinic?

Tell us what your product needs to do. We'll shape the scope, map a timeline and send a fixed price — free, and with no obligation to proceed.

Free consultation No commitment Fast reply