Skip to content
CodeDock
← Back to case studies
Case Study3.5 months · ongoing development7 min read

ClinicDent — multitenant SaaS for dental clinics, from booking a patient to billing the insurer

ClinicDent is a SaaS product for dental clinics that we designed and keep developing — and it runs in production. It covers the whole operation of a dental clinic — calendar, patient record, clinical notes, health-insurance billing, e-prescriptions, payments, inventory and patient communication. A multitenant .NET 10 backend, a React 19 web app, a native iPhone app and an online booking portal in 5 languages.

I want a similar solution →ClinicDent ↗
18modules in 4 areasper the product website
70API endpoint groups.NET 10 minimal API
5 languagesin the booking portalCS · EN · SK · DE · UK
250commits in 3.5 monthssince June 2026
01 — Starting point

A multi-doctor dental clinic needs more than a patient file

A clinic with several dentists and branches deals daily with scheduling, documentation, insurance billing, prescriptions, payments, lab orders and material inventory. Each area has its own rules and often its own software. On top of that, strict Czech regulations apply to medical records and patient data. The goal was one system for the whole clinic, offered to clinics as SaaS — including migration from an existing system.

Health-insurance billingVZP batches and code lists
Prescriptions and sick notesSÚKL eRecept, ČSSZ
Medical recordsDecree 98/2012 Coll.
SterilisationDecree 306/2012 Coll.
Patient personal dataGDPR export and erasure
Migration from another systemdata import, number series
Goal
the whole clinic in one systemfrom booking a patient to billing the insurer
02 — Solution

A multitenant .NET 10 platform with a web app, an iPhone app and a patient portal

We designed the system as SaaS from day one: one database for all clinics, strict data separation and each clinic's secrets encrypted separately. One API serves the staff app, the iPhone app, the booking portal and individual clinic websites.

01

Multitenant backend on .NET 10

Minimal API with 70 endpoint groups on PostgreSQL and EF Core. Every record carries a TenantId enforced automatically by a global query filter — without a clinic context the system returns no data (fail-closed). Clinic secrets are encrypted with AES-GCM using a key held in Azure Key Vault.

02

Web app for clinic staff

React 19 + MUI. Calendar with appointments and deposits, patient record, dental chart with FDI tooth notation, periodontal chart, treatment plans, clinical notes with billing rules, lab orders, inventory with batches and barcodes, management reports and a widget dashboard.

03

Integration with the Czech healthcare system

Billing batches for health insurers (KDAVKA) and VZP code lists, SÚKL e-prescriptions and drug database, ČSSZ electronic sick notes. Billing rules check procedure combinations and tooth localisation.

04

AI clinical-note assistant and voice dictation

An assistant on the Claude API drafts the clinical note from the dentist's notes — only as a suggestion the dentist confirms. Each clinic uses its own API key. The dental chart and periodontal chart can be entered by voice.

05

Booking portal and clinic websites

Patients book online on their clinic's page, sign in with e-mail and a one-time code, and can pay a deposit via ComGate. The portal is available in five languages (CS, EN, SK, DE, UK). Each clinic can also have its own website with content managed directly in ClinicDent.

06

Native iPhone app

A SwiftUI app for dentists and reception: calendar, patient record, chairside treatment notes, patient communication, push notifications and widgets. Localised in CS, EN and SK. Available on the App Store.

App Store ↗
07

Payments, signatures and accounting

ComGate gateway and payment terminal, bank statement import (camt.053), electronic document signing with an SMS code and exports to the Pohoda and Money S3 accounting systems.

03 — Architecture

Solution architecture

Docker containers behind Traefik on Azure with data stored in the EU. The .NET 10 API serves the staff app, the iPhone app, the booking portal and clinic websites. PostgreSQL with passwordless access via Managed Identity, patient attachments in a separate Blob Storage container per clinic, secrets in Azure Key Vault. CI/CD in Azure DevOps with secret scanning (gitleaks).

Solution architecture
  1. 01The dentist records the treatment in the clinical note.
  2. 02The request passes through Traefik.
  3. 03The staff app submits the note.
  4. 04The API checks the billing rules and tooth localization.
  5. 05The procedures are saved to the patient record.
  6. 06A KDAVKA batch goes to the insurer.
  1. Users: Clinic staff (dentists · front desk); Patients (online)
  2. Edge: Traefik (reverse proxy · TLS)
  3. Apps: Staff app (React 19 · MUI); iPhone (SwiftUI); Booking portal (5 languages · OTP); Clinic websites (Astro)
  4. Core: .NET 10 API (multitenant · TenantId · fail-closed)
  5. Data: PostgreSQL (Managed Identity); Blob Storage (container per clinic); Key Vault (AES-GCM secrets)
  6. Integrations: Czech healthcare (VZP batches, SÚKL eRecept, ČSSZ eNeschopenka); Payments & messaging (ComGate, SMS · email · APNs, DS Core · DICOM); Accounting & AI (Pohoda · Money S3, Claude API, ARES)
  7. Deployment: Azure DevOps → gitleaks → ACR → Docker · Traefik · Azure EU
04 — Results

Results

The whole clinic in one system

Scheduling, documentation, billing, prescriptions, payments, lab, inventory and patient communication share one patient record — no retyping between programs.

Records that follow the regulations

Access audit for medical records (Decree 98/2012 Coll.), signed clinical notes can only be appended, never rewritten, and records lock automatically after a set time. Sterilisation log per Decree 306/2012 Coll.

Strictly separated clinic data

A per-clinic global filter on every query, attachments in a separate storage container per clinic and encrypted secrets. Passwordless database access via Managed Identity, hosting in the EU.

AI assists, the dentist decides

The clinical-note assistant only suggests; the final entry is always confirmed by the dentist. Voice dictation of the dental and periodontal chart keeps hands free at the chair.

Migration from the old system

Data import from the existing system (calendar, clinical notes, billing) and continuing number series, so the clinic does not start from scratch.

Live in production

ClinicDent runs in production on Azure with data in the EU. The web app, the booking portal and the App Store iPhone app share one API and one patient record.

Technologies

  • .NET 10
  • ASP.NET Core Minimal API
  • EF Core
  • C#
  • PostgreSQL
  • React 19
  • TypeScript
  • Material-UI
  • Vite
  • Swift · SwiftUI
  • Astro
  • Docker
  • Azure
  • Azure Key Vault
  • Azure Blob Storage
  • Managed Identity
  • Azure DevOps Pipelines
  • Traefik
  • Cloudflare Pages
  • Anthropic Claude API
  • ComGate
  • SÚKL eRecept
  • VZP billing
  • ČSSZ eNeschopenka
  • WebAuthn (passkeys)

More case studies

All case studies

Magistra a.s.

Data warehouse on Microsoft Fabric for a 200+ pharmacy chain

DataEnterpriseMicrosoft Fabric
Read more

JUST CS spol. s r. o.

Full replacement of an MLM sales network management system in 3 months

EnterpriseSystem replacementAzure
Read more

Netigo s.r.o.

An application for network traffic collection and reporting supporting NetFlow v5/v9 and IPFIX protocols, with a high-performance storage backend on PostgreSQL + TimescaleDB.

High-performanceDataNetwork
Read more

Related reading

Deeper technical notes on the topics from this case study.

Architecture & Consulting · 6 min read

SaaS in 2 months that doesn't collapse in six: what to cut, what not to

Fotopast.cloud went to production 60 days after kickoff. Not a marketing trick — a series of conscious decisions about what ships and what gets deferred. Here are the rules we use.

Read article
Enterprise Integration · 8 min read

Enterprise integration: 5 things that break in production

Every integration looks fine until the producer has a bad day. Five failure modes we see repeatedly in enterprise systems — and the unglamorous fixes that prevent each one.

Read article
Architecture & Consulting · 9 min read

Off-the-shelf vs. custom software: when each one wins

Custom software development pays off when off-the-shelf does not fit — but not always. Five signals you need custom, plus a build vs buy decision framework.

Read article
A senior architect on every project · About us →

Want a similar solution?

Send us a message — we respond within one business day and schedule an intro call.
Get in touch