CareStack
Cloud dental practice management with multi-tenant scheduling, tokenized payments and automated patient reminders.

CareStack overview
CareStack is a cloud-based dental practice management platform we built to replace a fragmented, on-premise dental software estate. It covers the three workflows every practice runs daily: appointment scheduling, payment processing and patient communication. Each runs as its own microservice on Kubernetes across redundant cloud regions, with multi-tenant database isolation so that a dental group with dozens of branches and a single-chair clinic can share the platform without contending for resources.
Our engineering team owned the full re-platforming: network perimeter design, immutable infrastructure written in Terraform, secure data pipelines for personal health records, and the automation that removes manual front-desk tasks. Patients reach the platform through a browser single-page application or the iOS and Android apps; practice staff work in administrative panels that update in real time over WebSocket connections.
Challenge in Healthcare operations
The legacy layout we inherited depended on localised on-premise servers, manual data entry and uncoordinated client communications. That produced three concrete problems. Sensitive dental records sat on local hardware exposed to failure. Administrative bottlenecks built up during peak booking hours because scheduling, payment capture and reminders all competed for the same machines. And growth stalled, because every new location meant more hardware to provision and maintain. Physical payment terminals and manual confirmation calls added cost and error on top.
The brief was to move all of it into one unified, highly available cloud framework: a zero-downtime migration, records reachable at any hour across multiple geographic zones, and compliance controls for health data and card payments designed in from the start rather than bolted on.
Solution architecture & delivery
We rebuilt the application from scratch as decoupled microservices. Traffic enters through Anycast DNS and a cloud API gateway that handles TLS 1.3 termination, rate limiting and Okta token validation behind a web application firewall. Scheduling, payment and notification pods run in private subnets inside a managed Kubernetes cluster, each on dedicated compute, so a burst of traffic on the public booking portal cannot slow down clinical chart software or payment processing. PostgreSQL holds multi-tenant patient ledgers in isolated schemas, Redis provides the distributed cache, and RabbitMQ with Amazon SQS carries inter-service events and notification queues. Services are written in Node.js and Go, with NGINX Ingress at the edge.
The scheduling engine is an asynchronous state machine. A slot query is answered from cache in under fifty milliseconds. When a patient selects a slot, the service opens a short-lived reservation in Redis while intake forms and insurance details are completed, then confirms the booking with an optimistic-locking query against PostgreSQL so two front-desk agents can never double-book the same row. The state change is broadcast over the message broker and administrative dashboards update instantly. Worker pools evaluate provider schedules, vacation blocks and room-utilisation rules per tenant.
Payments never reach our servers as raw card data. The patient UI exchanges card details directly with an external payment broker for a single-use token. Our payment microservice validates the payload signature at the gateway, authorises the charge with the clearing network over a certificate-verified connection, receives the webhook response, writes an obfuscated ledger entry and signals the billing service to mark the invoice settled. Distributed locks guarantee a charge executes exactly once per invoice even during a momentary network drop, and PCI-DSS scope stays with the processor.
Reminders run through a cron scheduler that scans upcoming appointments and drops JSON message descriptors onto three isolated queues: high-priority (two-factor codes, instant cancellations), standard reminders (daily pushes, satisfaction surveys, office announcements) and billing (payment notifications, balance statements, receipts). Node.js worker pools translate each payload into the carrier's API format, track delivery receipts and retry with exponential back-off, so a morning batch of reminder texts never delays a security code.
Identity follows least privilege. Okta issues short-lived JSON Web Tokens with explicit scopes, and microservice routers match those scopes locally: a token carrying appointments:write executes, one lacking billing:delete is refused with HTTP 403. A receptionist account can schedule and contact patients but cannot open clinical charts or adjust payments. Tokens expire after fifteen minutes of inactivity and every authorisation decision is written to an immutable audit log with user, IP address and endpoint.
Key features of CareStack
- Multi-tenant appointment engine with optimistic locking, per-tenant calendar isolation and live front-desk dashboards over WebSockets
- Tokenized payment service with signature validation, exactly-once charge execution and automatic invoice settlement
- Automated SMS reminder pipeline on RabbitMQ with high-priority, standard and billing queues and carrier delivery tracking
- Okta single sign-on with role-based, least-privilege scopes, multi-factor validation and 15-minute token expiry
- Column-level AES-256 encryption of patient identifiers, HSM-managed keys with daily rotation and encrypted off-site backups
- Multi-region Kubernetes deployment with horizontal pod autoscaling, 10-second health checks and Anycast failover to surviving zones
- Terraform-defined infrastructure, GitLab CI/CD rolling releases, and isolated development, staging and production domains that use mock data outside production
- Prometheus and Grafana monitoring with structured JSON logs feeding single-screen dashboards for error rates, latency and queue depth
Who CareStack is for
CareStack is built for dental organisations running several branches on ageing on-premise systems that need one platform for the front desk, practitioners and billing staff. Receptionists get scheduling and patient contact, practitioners get synchronised calendars and charts, and finance gets a settled ledger without ever handling card numbers. The same multi-tenant design suits a single practice that wants cloud availability without running its own servers.
Impact & results
- Legacy scheduling systems, physical payment terminals and manual reminder protocols replaced by one automated, compliant cloud framework
- Double-bookings eliminated through optimistic locking; slot availability returned from cache in under fifty milliseconds
- Raw cardholder data removed from practice infrastructure entirely, keeping PCI-DSS scope with the payment processor
- Manual patient confirmation calls replaced by queued SMS reminders with delivery receipts and automatic retries
- Records available around the clock across multiple geographic zones, with rolling updates that ship without dropping patient connections
- Autoscaling adds pods when CPU exceeds sixty percent over a three-minute window and scales down overnight to cut compute cost
FAQ about CareStack
What problem does CareStack solve?
It replaces on-premise dental practice software, physical payment terminals and manual reminder calls with one cloud platform covering appointment scheduling, payment processing and patient communication, with multi-tenant isolation so multi-branch dental groups and single clinics share the same infrastructure safely.
Which technologies power CareStack?
Backend microservices in Node.js and Go run on Kubernetes and Docker across AWS and Azure. PostgreSQL stores multi-tenant ledgers with Redis as the cache, RabbitMQ and Amazon SQS carry events and notification queues, Okta handles identity, Terraform defines the infrastructure, GitLab CI/CD ships releases and Prometheus with Grafana provides monitoring.
How does CareStack prevent double-bookings?
The scheduling engine holds a short-lived slot reservation in Redis while the patient completes intake forms, then confirms the booking with an optimistic-locking query in PostgreSQL. If another front-desk agent has changed that slot in the meantime, the second transaction is rejected, rolled back and the calendar reloads with the current state.
How are patient records and card payments protected in CareStack?
Card details go directly to the PCI-DSS compliant payment provider and only a single-use token reaches our backend, so practice servers never store cardholder data. Patient records are encrypted at rest with AES-256, personal identifiers use column-level encryption, keys live in hardware security modules with daily rotation, and access runs through Okta single sign-on with multi-factor validation and scoped tokens that expire after fifteen minutes of inactivity.
CareStack product screens
Build your next Healthcare product with Next Olive
Share your requirements β we will propose scope, timeline and stack within one business day.