Skip to main content

Software Design Document: CODITECT Multi-Tenant SaaS Platform

MetadataValue
Document Version1.0.0
DateDecember 24, 2025
StatusDraft for Review
AuthorsCODITECT Architecture Team
ApproversHal Casteel (CEO/CTO)
Related ADRsADR-004 (Multi-Tenant Strategy), ADR-005 (Workstation Broker Pattern), ADR-006 (Gitea Multi-Tenant Git), ADR-008 (RBAC), ADR-009 (Multi-Tenant SaaS Architecture)

Table of Contents

  1. Executive Summary
  2. System Context (C4 Level 1)
  3. Container Architecture (C4 Level 2)
  4. Component Diagrams (C4 Level 3)
  5. Data Model Overview
  6. API Design Summary
  7. Security Architecture
  8. Deployment Architecture
  9. Quality Attributes
  10. Implementation Roadmap
  11. Appendices

1. Executive Summary

1.1 Purpose and Scope

This Software Design Document (SDD) defines the comprehensive architecture for the CODITECT Multi-Tenant SaaS Platform - a cloud-native development environment platform that enables:

  • User Registration and Authentication via Firebase Identity Platform
  • Payment Processing via Stripe with subscription management
  • Cloud Workstations with dedicated, shared, and pool modes with auto-hibernation cost optimization
  • Self-Hosted Git via Gitea with multi-tenant organization isolation and GitHub mirroring
  • Multi-Tenant Isolation using PostgreSQL Row-Level Security and GCP IAM
  • Enterprise-Grade Security supporting SOC 2, GDPR, and HIPAA compliance

1.2 System Overview

CODITECT provides fully managed cloud development workstations with IDE integration, enabling developers to:

  • Access production-ready development environments instantly
  • Collaborate across organizations, teams, and projects
  • Scale compute resources based on workload requirements
  • Pay only for actual usage with auto-hibernation

Target Market:

  • Individual developers (Free/Starter tiers)
  • Small businesses (Professional tier)
  • Enterprises (Business/Enterprise tiers)
  • Contractors with time-limited access
  • Third-party auditors with read-only access

1.3 Design Approach and Standards

Architectural Principles:

  • Serverless-First: Minimize idle infrastructure costs using GCP Cloud Run
  • Multi-Tenant by Default: Strong isolation via PostgreSQL RLS and GCP IAM
  • API-First Design: All functionality exposed via RESTful APIs
  • Security in Depth: Multiple layers of authentication, authorization, and isolation
  • Cost Optimization: Auto-hibernation and usage-based billing

Standards and Compliance:

  • C4 Model: Architectural diagrams using Context, Container, Component, Code levels
  • OpenAPI 3.0: API specification and documentation
  • OAuth 2.0 / OIDC: Authentication and authorization flows
  • SOC 2 Type II: Security and availability controls
  • GDPR: Data privacy and residency requirements
  • PCI DSS: Payment processing (delegated to Stripe)

2. System Context (C4 Level 1)

2.1 Context Diagram

2.2 External Systems

SystemTypePurposeInterface
Firebase AuthAuthenticationUser identity management, email/password, OAuth providersREST API
StripePayment ProcessingSubscription billing, payment methods, invoicingREST API + Webhooks
GCP Cloud WorkstationsDevelopment EnvironmentManaged cloud-based development workstationsgRPC API
GiteaGit HostingSelf-hosted multi-tenant Git with organization isolationREST API + Git Protocol
GitHubOAuth + MirroringSocial login and bidirectional repository mirroringOAuth 2.0 + Git
GitLabOAuth ProviderSocial login integrationOAuth 2.0
GCP Cloud SQLDatabasePostgreSQL with Row-Level SecuritySQL Protocol
GCP Cloud StorageObject StorageUser files, backups, artifactsGCS API
GCP Pub/SubMessage QueueAsync workstation provisioning, eventsPub/Sub API
GCP MemorystoreCacheRedis for sessions, rate limitingRedis Protocol

2.3 User Personas

PersonaRolePrimary GoalsAccess Level
Individual DeveloperOwnerQuick setup, learning projectsFull (own org)
Organization AdminAdminManage team, billing, access controlFull (org scope)
Team LeadDeveloperCoordinate projects, review codeTeam scope
Team MemberDeveloperBuild features, access workstationProject scope
ContractorContractorTime-limited project accessScoped access
AuditorAuditorRead-only compliance reviewRead-only

3. Container Architecture (C4 Level 2)

3.1 Container Diagram

3.2 Container Descriptions

Frontend Containers

ContainerTechnologyPurposeScalability
Web ApplicationReact, TypeScript, Next.jsPrimary user interface with SSRCDN + Cloud Run (0-100 instances)
Mobile AppFlutterMobile access (iOS/Android)Native app distribution
CLI ToolNode.jsAutomation and scriptingClient-side execution

API Layer Containers

ContainerTechnologyPurposeScalability
API GatewayActix-web (Rust), Cloud RunRequest routing, auth, rate limiting0-1000 instances
Auth ServicePython FastAPI, Cloud RunAuthentication, JWT management0-100 instances
User ServicePython FastAPI, Cloud RunOrg/team/project CRUD0-200 instances
Billing ServicePython FastAPI, Cloud RunStripe integration, webhooks0-50 instances
Workstation ServicePython FastAPI, Cloud RunShared workstation management, session lifecycle0-100 instances
Repository ServicePython FastAPI, Cloud RunGitea repository management, GitHub mirroring0-100 instances

Data Layer Containers

ContainerTechnologyPurposeScalability
Cloud SQLPostgreSQL 15Primary relational data storeVertical scaling (2-96 vCPU)
MemorystoreRedis 7Session cache, rate limitsVertical scaling (1-300GB)
Cloud StorageGCSObject storage for filesUnlimited
Pub/SubGCP Pub/SubAsync event queueAuto-scaling

4. Component Diagrams (C4 Level 3)

4.1 Auth Service Components

Component Responsibilities:

ComponentResponsibilityKey Methods
Auth ControllerHTTP request handlingPOST /auth/login, POST /auth/logout, POST /auth/refresh
Token ManagerJWT token lifecyclegenerate_token(), validate_token(), refresh_token()
Session ManagerSession state managementcreate_session(), get_session(), invalidate_session()
RBAC EnforcerPermission validationcheck_permission(), has_role(), filter_by_access()
Firebase ClientExternal auth integrationverify_firebase_token(), get_user_info()

4.2 Billing Service Components

Component Responsibilities:

ComponentResponsibilityKey Methods
Billing ControllerHTTP request handlingPOST /billing/checkout, GET /billing/usage, POST /billing/portal
Subscription ManagerSubscription state machinecreate_subscription(), update_subscription(), cancel_subscription()
Usage TrackerMetering and quotastrack_workstation_usage(), calculate_monthly_cost(), check_quota()
Invoice GeneratorInvoice creationgenerate_invoice(), send_invoice_email()
Stripe ClientExternal payment integrationcreate_checkout_session(), create_portal_session()
Webhook HandlerEvent processinghandle_checkout_completed(), handle_payment_failed()

4.2.1 Commerce Service Components (Product Catalog & Shopping Cart)

Component Responsibilities:

ComponentResponsibilityKey Methods
Catalog ControllerHTTP request handlingGET /products, POST /cart/items, POST /checkout
Cart ManagerShopping cart stateadd_item(), remove_item(), get_cart(), clear_cart()
Checkout OrchestratorMulti-product checkoutcreate_order(), process_payment(), fulfill_order()
Product CatalogProduct definitionsget_products(), get_product_by_slug(), check_eligibility()
Google Pay ClientGoogle Pay integrationcreate_payment_request(), process_payment_data()
Entitlement ManagerAccess provisioninggrant_entitlement(), check_entitlement(), revoke_entitlement()

CODITECT Product Catalog

ProductSlugTypePrice (Monthly)RequiresProvisions
CODITECT Corecorebase$49/mo-GCP Workstation + coditect-core framework
CODITECT DMSdmsaddon$29/mocoreAccess to dms.coditect.ai
Workflow Analyzerworkflowaddon$19/mocoreAccess to workflow.coditect.ai
Enterprise Bundleenterprisebundle$149/mo-All products + priority support

Checkout Flow Sequence

Payment Methods

MethodIntegrationUse Case
Stripe CheckoutRedirect flowFull-featured checkout, international
Google PayIn-app paymentOne-tap mobile/web checkout
Apple PayComing sooniOS/Safari users

4.2.2 Context Sync Service Components (Multi-Level Context Sync)

Architecture Reference: ADR-044 (Custom REST Sync), ADR-045 (Team/Project Context Sync)

Context Sync API Endpoints

EndpointMethodPurposeAuth
/api/v1/context/pushPOSTPush user context from deviceJWT (user)
/api/v1/context/pullGETPull user context to deviceJWT (user)
/api/v1/context/statusGETUser sync statusJWT (user)
/api/v1/teams/{id}/context/pushPOSTPush team contextJWT (team member)
/api/v1/teams/{id}/context/pullGETPull team contextJWT (team member)
/api/v1/teams/{id}/context/backupPOSTCreate team backupJWT (team admin)
/api/v1/teams/{id}/context/restorePOSTRestore team backupJWT (team admin)
/api/v1/projects/{id}/context/pushPOSTPush project contextJWT (project member)
/api/v1/projects/{id}/context/pullGETPull project contextJWT (project member)
/api/v1/projects/{id}/context/backupPOSTCreate project backupJWT (project owner)
/api/v1/projects/{id}/context/restorePOSTRestore project backupJWT (project owner)

Sync Architecture

User (Device A)     User (Device B)     Team Member
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────┐
│ CODITECT Sync API │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────┐ │
│ │ User Context│ │Team Context │ │ Project │ │
│ │ (per-user) │ │ (per-team) │ │ Context │ │
│ └─────────────┘ └─────────────┘ └─────────┘ │
└─────────────────────────────────────────────────┘


PostgreSQL
(Cloud SQL)


GCS Backups
├── users/{user_id}/
├── teams/{team_id}/
└── projects/{project_id}/

Backup Hierarchy

LevelScopeBackup ScheduleRetention
UserPersonal context per deviceHourly incremental, Daily full7d / 90d
TeamShared team knowledgeHourly incremental, Daily full7d / 90d
ProjectProject-scoped insightsHourly incremental, Daily full7d / 90d
OrganizationAll team + project contextsWeekly full365d

4.3 Workstation Service Components

Component Responsibilities:

ComponentResponsibilityKey Methods
Workstation ControllerHTTP request handlingGET /me/available, POST /{id}/connect, POST /sessions/{id}/disconnect
Session ManagerMulti-user session lifecyclecreate_session(), disconnect_session(), get_active_sessions()
Access ManagerWorkstation access controlget_available_workstations(), set_default_workstation(), grant_access()
Workstation ProvisionerAsync workstation creationprovision_workstation(), configure_environment()
Lifecycle ManagerState transitionsstart_workstation(), stop_workstation(), delete_workstation()
Hibernation SchedulerCost optimizationcheck_idle_workstations(), schedule_hibernation()
Usage MonitorMetering and reportingtrack_runtime(), record_activity(), calculate_monthly_usage()
GCP Workstations ClientExternal API integrationcreate_workstation(), start_workstation(), get_workstation_status()

Shared Workstation Modes

ModeDescriptionMax UsersUse Case
dedicatedOne workstation per user1High isolation, premium tier
sharedMultiple users on one workstation5Cost-conscious teams
poolOn-demand assignment from poolN/ALarge teams, variable demand

User Isolation in Shared Workstations

  • Each user gets a unique Linux account (UID 1000+)
  • Separate home directories with permission isolation
  • SSH keys managed per-user
  • Concurrent sessions tracked independently

4.4 Repository Service Components

Component Responsibilities:

ComponentResponsibilityKey Methods
Repository ControllerHTTP request handlingPOST /repositories, GET /repositories/{id}, DELETE /repositories/{id}
Gitea ClientGitea API integrationcreate_org_repo(), add_collaborator(), get_repo_info()
Mirror ManagerGitHub mirroringsetup_mirror(), sync_to_github(), sync_from_github()
Access ManagerPermission controlcheck_repo_access(), grant_access(), revoke_access()
Webhook HandlerEvent processinghandle_push(), handle_pr(), handle_mirror_sync()

Gitea Multi-Tenant Isolation

  • Each organization maps to a Gitea organization
  • Repositories created under gitea.coditect.io/{org}/{repo}
  • Organization admins have owner access in Gitea
  • Team-based repository access mirrors CODITECT RBAC
  • See ADR-006 for complete Gitea architecture

5. Data Model Overview

5.1 Entity-Relationship Diagram

5.2 Multi-Tenant Hierarchy

Organization (Tenant Root)
├── Subscription (Billing)
│ └── Invoices (Payment History)
├── Members (Users with Roles)
│ ├── Owner (1 required)
│ ├── Admin (0-N)
│ ├── Developer (0-N)
│ ├── Contractor (time-limited)
│ └── Auditor (read-only)
├── Teams (Logical Groups)
│ ├── Team Members
│ └── Projects
│ └── Repositories
└── Workstations (Per-User)
├── Running (billable)
├── Hibernated (no charge)
└── Stopped (no charge)

5.3 Row-Level Security (RLS) Policies

TablePolicyRule
organizationsSELECTUser is an active member
organizationsUPDATEUser has admin or owner role
teamsSELECTUser is member of organization
teamsINSERT/UPDATEUser has admin or owner role
projectsSELECTUser is member of organization
projectsINSERT/UPDATEUser has developer role or higher
workstationsSELECTUser owns workstation OR user is org admin
workstationsUPDATEUser owns workstation OR user is org admin
subscriptionsSELECTUser is org member
subscriptionsUPDATEUser has owner role

Security Functions:

  • current_org_id() - Returns organization ID from session variable
  • user_has_org_access(org_id, min_role) - Checks if user has required role in organization

6. API Design Summary

6.1 RESTful API Endpoints

Authentication Endpoints

EndpointMethodDescriptionAuth Required
/api/v1/auth/loginPOSTLogin with email/passwordNo
/api/v1/auth/login/googlePOSTLogin with Google OAuthNo
/api/v1/auth/login/githubPOSTLogin with GitHub OAuthNo
/api/v1/auth/logoutPOSTInvalidate sessionYes
/api/v1/auth/refreshPOSTRefresh JWT tokenYes
/api/v1/auth/verifyGETVerify current tokenYes

Organization Endpoints

EndpointMethodDescriptionRequired Role
/api/v1/organizationsPOSTCreate organizationAuthenticated User
/api/v1/organizations/{org_id}GETGet organization detailsMember
/api/v1/organizations/{org_id}PATCHUpdate organizationAdmin
/api/v1/organizations/{org_id}/membersGETList membersMember
/api/v1/organizations/{org_id}/membersPOSTInvite memberAdmin
/api/v1/organizations/{org_id}/members/{user_id}DELETERemove memberAdmin

Team Endpoints

EndpointMethodDescriptionRequired Role
/api/v1/organizations/{org_id}/teamsGETList teamsMember
/api/v1/organizations/{org_id}/teamsPOSTCreate teamDeveloper
/api/v1/organizations/{org_id}/teams/{team_id}GETGet team detailsMember
/api/v1/organizations/{org_id}/teams/{team_id}PATCHUpdate teamAdmin
/api/v1/organizations/{org_id}/teams/{team_id}/membersPOSTAdd team memberAdmin

Project Endpoints

EndpointMethodDescriptionRequired Role
/api/v1/organizations/{org_id}/projectsGETList projectsMember
/api/v1/organizations/{org_id}/projectsPOSTCreate projectDeveloper
/api/v1/organizations/{org_id}/projects/{project_id}GETGet project detailsMember
/api/v1/organizations/{org_id}/projects/{project_id}PATCHUpdate projectDeveloper
/api/v1/organizations/{org_id}/projects/{project_id}DELETEArchive projectAdmin

Workstation Endpoints

EndpointMethodDescriptionRequired Role
/api/v1/workstations/me/availableGETList available workstations for current userMember
/api/v1/workstations/me/defaultPOSTSet default workstation for loginMember
/api/v1/workstations/{ws_id}/connectPOSTConnect to workstation (creates session)Member
/api/v1/workstations/sessionsGETList active sessions for current userMember
/api/v1/workstations/sessions/{session_id}/disconnectPOSTDisconnect from workstationMember
/api/v1/workstations/{ws_id}GETGet workstation detailsOwner or Admin
/api/v1/workstations/{ws_id}/startPOSTStart workstationOwner or Admin
/api/v1/workstations/{ws_id}/stopPOSTStop workstationOwner or Admin
/api/v1/workstations/{ws_id}/statusGETGet workstation statusOwner or Admin
/api/v1/workstations/{ws_id}/usageGETGet usage statisticsOwner or Admin
/api/v1/workstationsPOSTProvision new shared workstationAdmin

Repository Endpoints

EndpointMethodDescriptionRequired Role
/api/v1/repositoriesGETList organization repositoriesMember
/api/v1/repositoriesPOSTCreate new repository in GiteaDeveloper
/api/v1/repositories/{repo_id}GETGet repository detailsMember
/api/v1/repositories/{repo_id}DELETEDelete repositoryAdmin
/api/v1/repositories/{repo_id}/mirrorPOSTSetup GitHub mirrorDeveloper
/api/v1/repositories/{repo_id}/mirror/syncPOSTTrigger manual syncDeveloper
/api/v1/repositories/webhooks/giteaPOSTGitea webhook handlerN/A (Webhook)
/api/v1/repositories/webhooks/githubPOSTGitHub webhook handlerN/A (Webhook)

Billing Endpoints

EndpointMethodDescriptionRequired Role
/api/v1/billing/checkoutPOSTCreate Stripe checkout sessionOwner
/api/v1/billing/portalPOSTCreate customer portal sessionOwner
/api/v1/billing/usageGETGet current billing period usageOwner
/api/v1/billing/invoicesGETList invoicesOwner
/api/v1/billing/webhooks/stripePOSTStripe webhook handlerN/A (Webhook)

6.2 API Authentication Flow

6.3 Workstation Provisioning Flow


7. Security Architecture

7.1 Authentication and Authorization

Authentication Methods:

  1. Email/Password - Firebase Auth with email verification
  2. Google OAuth - Social login via Firebase
  3. GitHub OAuth - Developer-focused social login
  4. GitLab OAuth - Enterprise developer login

Authorization Model:

  • Role-Based Access Control (RBAC) with hierarchical roles
  • PostgreSQL Row-Level Security for data isolation
  • JWT Tokens with embedded permissions
  • Session Management via Redis with TTL

Role Hierarchy:

Owner > Admin > Developer > Contractor > Auditor > Viewer

7.2 RBAC Permission Matrix

ResourceOwnerAdminDeveloperContractorAuditorViewer
View org settingsYesYesNoNoYesNo
Modify org settingsYesYesNoNoNoNo
Manage billingYesYesNoNoNoNo
Invite membersYesYesNoNoNoNo
Remove membersYesYesNoNoNoNo
Create teamsYesYesYesNoNoNo
Create projectsYesYesYesScopedNoNo
View projectsYesYesYesScopedYesYes
Manage own workstationYesYesYesYesNoNo
View all workstationsYesYesNoNoNoNo
View audit logsYesYesNoNoYesNo
Export dataYesYesNoNoYesNo

7.3 Multi-Tenant Isolation Layers

7.4 Security Controls

Control TypeImplementationPurpose
AuthenticationFirebase Auth + JWTVerify user identity
AuthorizationRBAC + PostgreSQL RLSEnforce access control
Data Encryption (Rest)GCP-managed AES-256Protect stored data
Data Encryption (Transit)TLS 1.3Protect data in motion
Network IsolationVPC, Private IPsSegment infrastructure
Rate LimitingRedis + API GatewayPrevent abuse
Audit LoggingPostgreSQL + Cloud LoggingCompliance and forensics
Secret ManagementGCP Secret ManagerProtect credentials
IAMGCP IAM + Service AccountsLeast privilege access
Vulnerability ScanningContainer AnalysisDetect CVEs

7.5 Compliance Mapping

StandardStatusKey Controls
SOC 2 Type IIReadyGCP inherited controls, audit logging, access controls
GDPRCompliantData residency (EU region), right to erasure, data portability
HIPAAReadyBAA available, encryption at rest/transit, audit logging
PCI DSSDelegatedStripe handles all card data (no card data in CODITECT)

8. Deployment Architecture

8.1 GCP Infrastructure Topology

8.2 Cloud Run Configuration

ServiceMin InstancesMax InstancesCPUMemoryTimeout
API Gateway110002 vCPU4 GiB60s
Auth Service11001 vCPU2 GiB30s
User Service12001 vCPU2 GiB30s
Billing Service0501 vCPU2 GiB60s
Workstation Service11002 vCPU4 GiB300s

Auto-scaling Triggers:

  • Request rate > 80 requests/instance
  • CPU utilization > 70%
  • Memory utilization > 80%

8.3 Database Configuration

Cloud SQL (PostgreSQL 15):

  • Instance: db-n1-standard-4 (4 vCPU, 15 GB RAM)
  • Storage: 100 GB SSD (auto-resize enabled)
  • High Availability: Regional (automatic failover)
  • Backup: Daily automated backups (7-day retention)
  • Point-in-time recovery: 7 days

Memorystore (Redis 7):

  • Tier: Standard (HA with automatic failover)
  • Memory: 5 GB (expandable to 300 GB)
  • Persistence: RDB snapshots every 6 hours

8.4 Disaster Recovery

ScenarioRTORPORecovery Strategy
Cloud SQL Failure2 minutes0 secondsAutomatic failover to standby replica
Region Outage4 hours5 minutesManual failover to backup region
Data Corruption1 hour1 hourPoint-in-time recovery from backups
Accidental Deletion30 minutes24 hoursRestore from daily backup

Backup Strategy:

  • Automated SQL Backups: Daily at 2 AM UTC, 7-day retention
  • Transaction Logs: Continuous archival for PITR
  • GCS Snapshots: Weekly full snapshots, 30-day retention
  • Disaster Recovery Region: us-east1 (passive standby)

9. Quality Attributes

9.1 Scalability

Horizontal Scaling:

  • API Services: Cloud Run auto-scales 0 → 1000 instances per service
  • Database Connections: PgBouncer connection pooling (1000 max connections)
  • Workstation Cluster: Supports 10,000+ concurrent workstations per region

Vertical Scaling:

  • Cloud SQL: Upgrade to db-n1-highmem-16 (16 vCPU, 104 GB RAM)
  • Memorystore: Expand to 300 GB memory
  • Workstation Machine Types: e2-medium → n2-highmem-16

Performance Targets:

MetricTargetCurrent
API Response Time (p95)< 200ms150ms
Workstation Provisioning< 5 minutes3 minutes
Database Query Time (p95)< 50ms30ms
Concurrent Users10,000+Tested to 1,000

9.2 Reliability

Availability Targets:

  • SLA: 99.9% uptime (8.76 hours downtime/year)
  • API Services: 99.95% (leveraging Cloud Run SLA)
  • Cloud SQL: 99.95% (HA configuration)
  • Workstations: 99.5% (dependent on GCP Cloud Workstations SLA)

Fault Tolerance:

  • Automatic Retries: Exponential backoff for transient failures
  • Circuit Breaker: Prevent cascade failures (open after 5 consecutive failures)
  • Health Checks: /health endpoint on all services (10s interval)
  • Graceful Degradation: Read-only mode when database replica fails

Monitoring and Alerting:

  • Uptime Checks: External synthetic monitoring (1-minute interval)
  • Error Rate Alerts: > 5% error rate triggers PagerDuty
  • Latency Alerts: p95 > 500ms triggers warning
  • Database Alerts: Connection pool > 80% triggers scaling

9.3 Security

Security Posture:

  • Zero Trust Architecture: All services require authentication
  • Least Privilege: Service accounts with minimal permissions
  • Defense in Depth: Multiple layers of isolation (app, DB, infra)
  • Audit Trail: All mutations logged to Cloud Logging

Vulnerability Management:

  • Container Scanning: Automated CVE detection on every build
  • Dependency Scanning: Snyk integration for npm/pip packages
  • SAST: Static analysis with Semgrep
  • Penetration Testing: Annual third-party security audit

Incident Response:

  • Detection: Real-time security alerts via Cloud Security Command Center
  • Containment: Automated IP blocking for detected attacks
  • Recovery: Rollback to last known good deployment (< 5 minutes)
  • Post-Mortem: Required for all security incidents

9.4 Maintainability

Code Quality:

  • Test Coverage: > 80% unit test coverage
  • E2E Tests: Critical user flows automated with Playwright
  • Code Review: Required for all changes (2 approvals)
  • Linting: Automated with Ruff (Python), ESLint (TypeScript)

Observability:

  • Structured Logging: JSON logs with trace context
  • Distributed Tracing: OpenTelemetry + Cloud Trace
  • Metrics: Prometheus-compatible metrics exposed on /metrics
  • Dashboards: Grafana dashboards for all services

Documentation:

  • API Documentation: Auto-generated OpenAPI spec
  • Architecture Diagrams: C4 diagrams (this document)
  • Runbooks: Operational procedures for common incidents
  • ADRs: Architecture decision records for major choices

9.5 Cost Optimization

Strategies:

  1. Serverless-First: Pay only for actual compute usage
  2. Auto-Hibernation: Workstations hibernate after 30-60 minutes idle (60-70% savings)
  3. Connection Pooling: Reduce database connections (PgBouncer)
  4. Caching: Redis for session and query caching (reduce DB load)
  5. CDN: Cloud CDN for static assets (reduce egress costs)

Cost Breakdown (1,000 users):

ComponentMonthly Cost% of Total
Cloud Workstations$10,00091%
Cloud SQL$2002%
Cloud Run$1501%
Memorystore$2002%
Cloud Storage$1001%
Other (CDN, Pub/Sub, Monitoring)$3003%
Total$10,950100%

Revenue Model:

  • Gross Margin: 45% overall
  • Per-User Margin (Business Plan): 86% ($99/user - $13.99 cost)

10. Implementation Roadmap

10.1 Phase 1: Foundation (Weeks 1-4)

Milestone: Core authentication, database, and API scaffolding

Tasks:

  • Week 1: PostgreSQL schema deployment with RLS policies
  • Week 1: Firebase Auth integration (email/password, Google OAuth)
  • Week 2: Cloud Run API Gateway with Actix-web
  • Week 2: Auth Service implementation (JWT, session management)
  • Week 3: User Service implementation (org/team/project CRUD)
  • Week 3: Stripe integration (checkout, webhooks, customer portal)
  • Week 4: Integration testing and security hardening

Deliverables:

  • Users can register, login, create organizations
  • Stripe checkout flow working end-to-end
  • API documentation (OpenAPI spec)
  • CI/CD pipeline for Cloud Run deployments

10.2 Phase 2: Workstations (Weeks 5-8)

Milestone: Cloud Workstation provisioning and lifecycle management

Tasks:

  • Week 5: GCP Cloud Workstations cluster setup (us-central1)
  • Week 5: Workstation configs (Starter, Pro, Max, Enterprise tiers)
  • Week 6: Workstation Service implementation (provisioning API)
  • Week 6: Pub/Sub async provisioning queue
  • Week 7: Workstation Controller implementation (start/stop/hibernate)
  • Week 7: Auto-hibernation scheduler (idle detection)
  • Week 8: Usage tracking and metering integration
  • Week 8: End-to-end workstation flow testing

Deliverables:

  • Users can provision and access cloud workstations
  • Auto-hibernation working (saves 60-70% cost)
  • Usage tracking integrated with billing
  • Workstation lifecycle fully automated

10.3 Phase 3: Multi-Tenancy (Weeks 9-12)

Milestone: Full multi-tenant organization management

Tasks:

  • Week 9: Organization management UI (settings, branding)
  • Week 9: Team CRUD implementation
  • Week 10: Project CRUD implementation
  • Week 10: RBAC enforcement across all endpoints
  • Week 11: Member invitation flow (email invites)
  • Week 11: Contractor role with time-limited access
  • Week 12: Auditor role with read-only access
  • Week 12: Multi-tenant integration testing

Deliverables:

  • Organizations can create teams and projects
  • Admins can invite members with different roles
  • Contractors get auto-revoked access after expiry
  • Auditors have read-only compliance access

10.4 Phase 4: Polish (Weeks 13-16)

Milestone: Production-ready platform with full observability

Tasks:

  • Week 13: Stripe customer portal integration
  • Week 13: Usage dashboards (Grafana)
  • Week 14: Audit logging implementation
  • Week 14: Admin portal for organization management
  • Week 15: Production hardening (rate limiting, DDoS protection)
  • Week 15: Security audit and penetration testing
  • Week 16: Performance optimization (caching, query tuning)
  • Week 16: Beta user testing and feedback iteration

Deliverables:

  • Customers can self-manage billing via Stripe portal
  • Admins have visibility into usage and costs
  • All mutations audited and logged
  • Production environment hardened and tested
  • Beta launch ready (limited user onboarding)

Target Launch: January 21, 2026 (16 weeks from kickoff)


11. Appendices

11.1 Glossary

TermDefinition
ADRArchitecture Decision Record - documents significant architectural decisions
C4 ModelContext, Container, Component, Code - hierarchical architecture diagramming method
Cloud RunGCP serverless container platform with auto-scaling
Cloud WorkstationsGCP managed cloud development environments with IDE integration
Firebase AuthGoogle's authentication service supporting email/password and OAuth providers
gRPCHigh-performance RPC framework using HTTP/2 and Protocol Buffers
IAMIdentity and Access Management - GCP service for permissions
JWTJSON Web Token - compact token format for authentication
MemorystoreGCP managed Redis service for caching
Multi-TenancyArchitecture pattern where single application serves multiple isolated customers
RBACRole-Based Access Control - permission model based on user roles
RLSRow-Level Security - PostgreSQL feature for data isolation
SSRServer-Side Rendering - rendering HTML on server for better SEO
StripePayment processing platform for subscription billing
VPCVirtual Private Cloud - isolated network in GCP

11.2 Abbreviations

AbbreviationFull Form
APIApplication Programming Interface
CDNContent Delivery Network
CRUDCreate, Read, Update, Delete
DBDatabase
E2EEnd-to-End
GCPGoogle Cloud Platform
GCSGoogle Cloud Storage
HAHigh Availability
HTTPSHypertext Transfer Protocol Secure
IDEIntegrated Development Environment
JSONJavaScript Object Notation
OIDCOpenID Connect
OAuthOpen Authorization
PIIPersonally Identifiable Information
RESTRepresentational State Transfer
RPORecovery Point Objective
RTORecovery Time Objective
SaaSSoftware as a Service
SLAService Level Agreement
SQLStructured Query Language
TLSTransport Layer Security
UUIDUniversally Unique Identifier
vCPUVirtual CPU

11.3 References

  1. ADR-004: Multi-Tenant Strategy
  2. ADR-005: Workstation Broker Pattern - Shared workstation architecture
  3. ADR-006: Gitea Multi-Tenant Git - Self-hosted Git with GitHub mirroring
  4. ADR-008: Role-Based Access Control
  5. ADR-009: Multi-Tenant SaaS Architecture
  6. C4 Model: https://c4model.com/
  7. GCP Cloud Workstations: https://cloud.google.com/workstations/docs
  8. Gitea API: https://docs.gitea.io/en-us/api-usage/
  9. Stripe Subscriptions: https://stripe.com/docs/billing/subscriptions/overview
  10. PostgreSQL RLS: https://www.postgresql.org/docs/current/ddl-rowsecurity.html
  11. Firebase Auth: https://firebase.google.com/docs/auth
  12. Cloud Run: https://cloud.google.com/run/docs
  13. OpenAPI Specification: https://spec.openapis.org/oas/v3.0.0

11.4 Revision History

VersionDateAuthorChanges
1.0.02025-12-24CODITECT Architecture TeamInitial version with C4 diagrams and complete architecture

Document Status: Draft for Review Next Review Date: January 7, 2026 Approval Required From: Hal Casteel (CEO/CTO), Architecture Team, Security Team


END OF DOCUMENT