Pavol Rašev
Prijímam nové projekty
Všetky projekty

FyzioDesk

Softvér na chod fyzioterapeutickej praxe, robený pre Slovensko a Česko. Kalendár a online rezervácie, karty klientov a zdravotná dokumentácia, cvičebné plány s videom a prehľadom, ako ich klient plní, faktúry a portál, kde si klienti rezervujú termín a vidia svoj plán.

Klient
Môj vlastný produkt
Moja rola
Produkt, dizajn a celý kód
Obdobie
August 2026 – dodnes
Stav
Beží na app.fyziodesk.sk, mobilné appky vo vývoji
Technológie
NestJS 11 na Fastify, Next.js 16, React 19, Prisma 7, PostgreSQL 18, Redis, BullMQ, MinIO, Expo, Zod
FyzioDesk: screenshot
FyzioDesk on a phone

Prečo som ho postavil

Fyzioterapeuti na Slovensku a v Česku kombinujú rezervačný nástroj, tabuľku klientov, papierové poznámky a cviky vytlačené z internetu. Kým som začal písať kód, porovnal som deväť produktov, od domácich až po Cliniko, Jane a Physitrack. Žiadny nespájal natívne appky pre klienta aj terapeuta, fotodokumentáciu priamo od lehátka a plnenie cvičebného plánu ako hlavné číslo.

FyzioDesk je taký produkt. Klinika, jej miestnosti a terapeuti majú v systéme vlastný oddelený priestor (tenant). Každá rola vidí len to, čo vidieť má.

Karta klienta: upozornenie na kontraindikáciu, editor záznamov so šablónami a mapa tela na označenie bolesti

Karta klienta s mapou bolesti

Pre terapeuta počas terapie a po nej.

Štruktúrované záznamy zo šablón, kontraindikácie, ktoré zostávajú navrchu, a mapa tela, na ktorej terapeut označí, kde a ako veľmi to bolí. Zdravotný záznam sa po uložení nedá upraviť: oprava je nová verzia, ktorá odkazuje na pôvodnú.

Online rezervácia: najprv služba, potom čas, potom vaše údaje

Online rezervácie

Verejná stránka a widget na vloženie do webu pre každú kliniku.

Klient si vyberie službu a čas a vyplní svoje údaje. Potvrdenie príde so súborom .ics na pridanie do kalendára, pripomienky 24 a 2 hodiny vopred.

Cvičebný plán klienta: 100 % za štyri týždne, štyri dni v rade a odškrtnuté cviky

Cvičebný plán

Pre klienta doma.

Domáci program s videom ku každému cviku. Klient si cviky odškrtáva a zapisuje bolesť. Plnenie plánu sa vždy vypočíta a nikdy neukladá, takže nemôže byť zastarané.

Reporty: vyfakturované a zatiaľ nevyfakturované tržby, čas stratený pre neprišlých klientov, neskoré zrušenia a čísla po terapeutoch

Reporty

Pre majiteľa kliniky.

Čo sa vyfakturovalo a čo nie, koľko času stoja klienti, ktorí neprídu, neskoré zrušenia a vyťaženosť každého terapeuta.

Rozhodnutia, ktoré stoja za zmienku

  • Dáta kliník oddeľujú dve vrstvy.V aplikácii kontrolujú členstvo guardy a každá tabuľka s tenant_id má politiku PostgreSQL row-level security (pravidlo prístupu k jednotlivým riadkom). API sa pripája ako rola bez superusera a bez BYPASSRLS, a keby sa to niekedy zmenilo, odmietne sa spustiť.
  • Dvojitá rezervácia nie je len nepravdepodobná, je nemožná.GiST exclusion constraints, pravidlá priamo v databáze nad časovými rozsahmi, nedovolia rezervovať terapeuta ani miestnosť dvakrát na ten istý čas. Test pošle 20 súčasných rezervácií na jeden termín a čaká, že uspeje presne jedna. Našiel tak deadlocky medzi oboma pravidlami, ktoré teraz riešim opakovaním s náhodným oneskorením (jitter).
  • Do zdravotných záznamov sa dá iba pridávať.Databázový trigger odmietne akúkoľvek zmenu obsahu uloženého záznamu. Zmeniť sa smie iba príznak zmazania.
  • Č sa radí za C.Stĺpce s menami používajú slovenské abecedné radenie (ICU collation), takže zoznam klientov je v poradí, aké slovenský čitateľ čaká.
  • Fotky len so súhlasom, odkazy s obmedzenou platnosťou.Súbory sú v privátnych bucketoch MinIO. Nahrávanie aj sťahovanie ide cez podpísané (presigned) URL s platnosťou desať minút, ktoré systém vydá až po kontrole oprávnení.
  • AI recepčná, ktorá nevidí zdravotné údaje.MCP server, teda rozhranie, cez ktoré AI asistent pracuje s aplikáciou, mu dáva šesť nástrojov: nájsť klienta, dnešné termíny, voľné termíny, rezervovať, zrušiť, nezaplatené faktúry. Používa verejné API s API kľúčom a k zdravotnej dokumentácii sa nedostane.

V číslach

  • 18 modulov API s 271 endpointmi, 72 databázových modelov a 75 migrácií.
  • 110 testovacích súborov s viac ako 1 600 testami, ktoré bežia proti skutočnému PostgreSQL a MinIO v kontajneroch.
  • Spoločné Zod kontrakty: dostupnosť termínov, stav faktúry, plnenie plánu a QR platby sú v API, vo webovej aplikácii aj v mobilnej appke ten istý kód.

Faktúry majú QR kódy Pay by square a SPAYD a export do ISDOC. Platobné brány, SMS a push notifikácie sú zapojené a čakajú na obchodnícke účty.

Zoznam klientov s vyhľadávaním, filtrami, exportom a dátumami ďalších termínov

Zoznam klientov

306 klientov v demo dátach, s vyhľadávaním a filtrami.