Skip to main content
Architecture

Private network for PHI. One public door.

Expose only IntakeService to the internet. Keep the API gateway and every PHI-bearing service — including SchedulingService — on the private network.

Topology

Portal, gateway, services, bus.

Blazor Server Portal
MudBlazor · staff tokens
YARP API Gateway
private :5200
IntakeService
public · isolated
Patient
Schedule
Claims
Eligibility
ERA
Auth
Rx
Vision
PostgreSQL per service
no shared PHI database
Service Bus
booking-requests topic

Conceptual. Exact ports and overlays live in the repository under infrastructure/k8s.

Public

  • IntakeService, TLS, API key at the edge.
  • Disabled by default (404 until PublicBooking:Enabled).
  • Isolated durable inbox database only.
  • Cannot read clinical, patient, or scheduling records.

Private

  • Portal, YARP gateway, every other service.
  • SchedulingService appointment APIs always require a signed staff token.
  • Per-service PostgreSQL.
  • Service Bus topic booking-requests / subscription scheduling.
Run it

Compose, Kubernetes, or services one at a time.

Each service defaults to SQLite for local development. Production is PostgreSQL.

Docker Compose

docker-compose up -d

Portal :5000. Gateway :5200. Swagger per service on 510x.

Local Kubernetes

./scripts/deploy-local-k8s.sh

Namespace clouddental. Helper generates the local database password and JWT key in-cluster. They are not in the repo.

Cloud

infrastructure/k8s · Bicep

Azure deployment runs after CI on main. Manifests for DOKS and cloud overlays are in the repository.

Source: github.com/aurelianware/clouddentaloffice

Read the manifests. Then talk about a deploy.

No borrowed cloud-provider badges. The topology is in source.

Founding-practice pilot starts October 2026.

Join the pilot → How it works