Skip to main content

v2.0.0 — Single-Click Deployment & Pre-Built Images

· 3 min read

We're proud to announce v2.0.0, our biggest release yet! This major version introduces single-click production deployment and pre-built Docker images across all services!

Release

v2.0.0

February 15, 2026

Single-Click Deploy & Pre-Built Images

← Back to Blog

🎉 Major Release Highlights

This release marks a significant milestone with:

  • Zero local builds — All Docker images pre-built via CI/CD
  • One-command deployment — Single install.sh script for full stack
  • Comprehensive documentation — Complete deployment guides and platform runbook

New Features

Single-Click Deployment

  • install.sh Script — Automated full-stack deployment (Rocky Linux 10 compatible)
  • Pre-Built Images — All services now use GitHub-built Docker images
  • Environment Validation — Step 8b validates .env.production before deployment
  • Bash History — Phase 6 bootstrap enables command history with timestamps

Pre-Built Docker Images

  • ctms-cube — Cube.js semantic layer with baked-in config and models
  • ctms-api-gateway — KrakenD API gateway image
  • supabase-seed — Database initialization container
  • frappe-marley-health — Custom Frappe Healthcare image

Data Pipeline Improvements

  • Ghost Column Cleanup — Removed DLT orphaned columns from staging models
  • Drug Prescription Dates — Proper date casting (vs timestamp)
  • Patient Location — Null-handling for missing fields
  • Phase 2 Cleanup — Removed all unused null-only columns from dbt models

Enhancements

CTMS Platform

  • Calendar date picker: UTC storage with local display
  • Toast message improvements for user status changes
  • Prevent past date selection on Add Sites expected start date
  • Study Participants: Enhanced enrollment flow with duplicate prevention

Documentation (Comprehensive Overhaul)

  • Single-click deployment guide
  • Self-hosted vendor stacks (Supabase + Frappe)
  • Individual service deployment guide
  • System requirements documentation
  • Platform runbook with Make commands reference
  • Data pipeline runner guide

DevOps

  • Hetzner deployment testing and docs update
  • Standardized .env.production naming convention
  • Eliminated all client-specific defaults from compose files
  • External ctms-network for inter-service communication

API Routing

  • Proposal: Consolidate API routing layer (eliminate KrakenD/Next.js duplication)
  • Patient composite endpoint (/api/v1/patient/[email])
  • Doctype API respects limit_page_length query param

Bug Fixes

CTMS Platform

  • Fixed calendar date picker save/display with UTC normalization
  • Fixed duplicate subject-study enrollment
  • Fixed null encounter on subject add
  • Fixed encounter creation disabled in signup APIs
  • Fixed LaboratorySelect ReferenceError from variable reordering
  • Fixed apiClientUrl for browser-side Patient Encounter calls
  • Fixed Docker-internal API URL leaking to browser

Data Pipeline

  • Fixed Cube API retry logic for 'Continue wait' responses
  • Fixed SSL verification for self-signed certificates
  • Fixed AE ghost column (relationship_to_study)
  • Fixed patient_encounter orphaned columns

Infrastructure

  • Fixed compose validation error from empty volumes key
  • Fixed cube dev volume mounts in production
  • Fixed SUPABASE_SERVICE_ROLE_KEY in zynexa env
  • Fixed install.sh with 6 deployment-tested hardening fixes

Migration Notes

Breaking Changes

  • All Docker images now pulled from registry (no local builds required)
  • .env.client0 renamed to .env.production — update your configurations
  • Cube model files baked into image (remove local volume mounts)

Upgrade Steps

  1. Pull latest install.sh from ctms.devops
  2. Rename .env.client0 to .env.production
  3. Run ./install.sh for automated deployment
  4. Verify with platform runbook checklist

For complete documentation, visit our docs site.