Skip to content

Project Status Dashboard

Where we are, what's next, and what's blocking us. Updated as phases are completed.

Last updated: 2026-03-06


Phase Progress

Completed

PhaseNameWhat Was Built
1FoundationGo scaffold, chi router, PostgreSQL + Redis, migrations, health check, middleware stack, all 3 frontend app scaffolds (Next.js 16), shared UI/API client packages, domain-based org routing with custom domains, DNS verification, Redis caching

In Progress

PhaseNameStatus
2Auth & Multi-TenancyCode complete — validating. E2E blocked on Clerk API keys.

E2E Validation Pending

Phase 2 (Auth & Multi-Tenancy) is code-complete but E2E testing is blocked on Clerk API keys. See Blockers.

Up Next

PhaseNameWhat to Build
3Core Domain ModelsSpecialties, Specialists, Patients, Services — the data layer everything depends on

Planned

PhaseNameNotes
4Scheduling & AppointmentsDepends on Phase 3. Most complex feature.
5Forms & Custom FieldsCan parallel with Phase 4
6Documents & PDF GenerationDepends on Phase 5
7Treatment Plans & Exercise LibraryRegulatory boundary starts here
8Automations & WebhooksDepends on Phase 4, 5
9Telemetry ServiceCan parallel with Phases 4-8
10Compliance & Security HardeningOngoing concern
11Dashboard & StatsDepends on Phases 4, 5, 9
12Testing (dedicated)Ongoing
13Frontend Integration ContractDepends on Phases 4, 5

Current Focus: Phase 2 Validation → Phase 3

Phase 2 — Remaining validation

TaskStatus
First login, user auto-provisioned in Core API databaseBlocked (Clerk keys)
Sign in, Clerk token, GET /v1/me returns correct user + org contextBlocked (Clerk keys)
Org switching from Clinic app, subsequent API calls return scoped dataBlocked (Clerk keys)
Superadmin endpoint (POST /v1/organizations), 403 for non-superadmin rolesBlocked (Clerk keys)
Blocked user with valid Clerk token, 403 from Core APIBlocked (Clerk keys)

Phase 3 — Core Domain Models (next)

The data layer for the primary entities that appointments, forms, and scheduling depend on.

TaskFeatureStatus
specialties table + RLS + CRUD APISpecialtiesNot started
specialists table + RLS + CRUD APISpecialistsNot started
Weekly availability + date overrides + timezoneSpecialistsNot started
patients table + patient_org_profiles + RLSPatientsNot started
Patient onboarding + guest registrationPatientsNot started
services table + billing models + CRUD APIServicesNot started
products table for physical productsServicesNot started

Exit criteria: All core entities have working CRUD APIs, RLS policies, and pass integration tests.


Blockers

BlockerImpactAction Needed
Clerk API keys not configuredE2E validation of Phase 2 cannot runSet up Clerk project and add keys to .env

Pending Decisions

These decisions need to be made before or during the relevant phase.

DecisionNeeded BeforeOptionsStatus
PDF rendering enginePhase 6ChromeDP, wkhtmltopdf, GotenbergOpen
i18n scopePhase 7See TranslationsOpen
Email/SMS providerPhase 8AWS SES, SendGrid, Postmark / Twilio, AWS SNSOpen
Payment integrationPhase 11Stripe, local Romanian provider, deferredOpen
Mobile app approachPhase 13React Native, Flutter, responsive web onlyOpen

Known Documentation Gaps

Tracked from the gap analysis. These should be addressed as the relevant phases are built.

Pre-Launch (Critical)

  1. Testing Strategy & Guidelines
  2. CI/CD Pipeline & Deployment
  3. Frontend Integration Contract
  4. Data Migration Plan
  5. Developer Onboarding Guide

Pre-Scale (Important)

  1. Error Handling Standards
  2. API Versioning Strategy
  3. Caching Strategy
  4. Rate Limiting Details
  5. Email & SMS Templates

See full gap list for the complete inventory (25 items across 3 priority tiers).


Build Timeline

Phase:  1  2  3  4  5  6  7  8  9  10 11 12 13
        |--1--|  Done (Foundation)
           |--2--|  Validating (Auth & Multi-Tenancy)
              |-----3-----|  <-- NEXT
                      |--------4--------|
                      |-----5-----|
                                  |--6--|
                            |------7------|
                                  |-----8-----|
              |------9 (parallel)-------------|
                                           |10|
                                              |11|
        |---12 (ongoing)--------------------------------------|
                                                 |--13--|