Rehabilitation without the clinic
ДВИЖ.LAB is a health-tech platform for remote rehabilitation. A patient finds a specialist, books and pays for a consultation, meets them on video, and then follows a personal programme: exercises, written tasks and video reports the specialist reviews and comments on.
For the specialist it replaces a patient CRM, a calendar, a video tool, a messenger, a programme builder and an exercise library. We built it as a team in three months, and I did the front end: the public site and the app with separate workspaces for patients, specialists and administrators. The platform has just launched.
The video call was the hard part
Consultations are WebRTC video calls, and a rehab session can't fall apart because someone's Wi-Fi blinked. On the front end I made calls reconnect on their own, survive the session being replaced, and show who is speaking. Chat runs next to the call on Socket.IO.
Patients record video reports right in the app. Files go straight to object storage through signed uploads, and the backend compresses them in a queue, so the patient never waits on a heavy upload to the API.
Three workspaces, one set of rules
Patients, specialists and administrators each get their own workspace. The rules live on the backend, and my screens show only what the server allows: booking and cancelling, working hours with buffers and blocked time, programmes split into stages, and tariff limits. On the advanced tariff an exercise counts only once a video report confirms it.
The admin panel is an operational tool, not a table editor. A medical document opens only through a separate action that asks for a reason, issues a short-lived link and writes to the audit log.
Payments that cannot fail quietly
Payments go through YooKassa with hold and capture, refunds and reconciliation on the backend. On my side the rule was simple: the redirect after checkout proves nothing. The interface shows a purchase as done only after the server has confirmed it with the provider.
Fast outside, tested inside
The public site is a static Astro build. Specialist pages are generated from the API, and every booking button carries what the visitor wanted to do into the app.
Underneath sit around sixty data models and more than three hundred test files, including end-to-end tests in Playwright that walk through the screens I built.
Stack
























