arrow_backBack to Portfolio
HealthTech / Marketplace·v1.0.0·Jun 2025

DentMap

A map-first dental clinic discovery and booking platform for the Romanian market, with a dedicated patient mobile app and clinic dashboard.

NestJS 11Angular 21Expo / React NativePostgreSQL + PostGISMongoDBRedis
dashboard

DentMap

DentMap screenshot
01

warningThe Challenge

The Romanian dental market operates almost entirely through phone calls and paper logs. Clinics deal with no-shows, double-bookings, and zero visibility into their business metrics. Patients have no reliable way to discover, compare on a map, or book a clinic online. The platform had to serve three fundamentally different roles — patient, clinic, admin — across four separate apps (web, admin, API, mobile), with per-clinic data isolation, real-time geographic search, and recurring billing from day one.

  • arrow_forwardZero digital booking infrastructure on the local market
  • arrow_forwardClinic discovery limited to word-of-mouth, no map-based search
  • arrow_forwardDouble-booking risk under concurrent slot requests
  • arrow_forwardSpecial-category health data (GDPR Art. 9) requiring minimisation and encryption
02

architectureThe Solution

I built a pnpm + Turborepo monorepo with a NestJS 11 API, two Angular 21 apps (clinic dashboard + admin panel), and an Expo/React Native app for patients, sharing DTOs and Zod schemas through a common package. PostgreSQL with the PostGIS extension powers radius-based map search (ST_DWithin), MongoDB handles chat threads separately (flexible, append-heavy schema), and Redis locks booking slots (SET NX EX 300) to eliminate double-booking under concurrent requests. Socket.IO delivers real-time status updates and messaging. The system respects GDPR Art. 9 for special-category health data — minimised collection, encryption at rest, and a defined retention window.

Architecture

NestJS 11 APIarrow_forward
Angular 21 (Web + Admin)arrow_forward
Expo 54 / React Native 0.81arrow_forward
PostgreSQL + PostGISarrow_forward
MongoDB (chat)arrow_forward
Redis (slot locks)

Next Project

Zavia

arrow_forward