Skip to content

Forma3D.Connect — Development Roadmap

Last updated: 2026-03-14
Status: Active — tracks upcoming development work
Prompt files: Each item links to a detailed AI development prompt in this folder


Priority Overview

Items are ordered by implementation priority (highest first). Each item has an estimated effort and dependency chain that determines sequencing.

# Item Status Effort Dependencies Prompt File
1 ClickHouse + Grafana Logging Done 16–24h None done/prompt-clickhouse-grafana-logging.md
2 pgAdmin On-Demand Done 8–12h None done/prompt-pgadmin-on-demand-container.md
3 Stock Management Done 20–32h None done/prompt-inventory-stock-management.md
4 Stubs & Retry Handlers Done 8–12h None prompt-implement-stubs-and-retry-handlers.md
5 SonarCloud Integration Done 1–2h None done/prompt-sonarcloud-integration.md
6 CodeCharta City Visualization Done 2–4h SonarCloud (API data required) done/prompt-codecharta-city-visualization.md
7 Scaling Preparations Planned 8–12h None prompt-scaling-preparations.md
8 Multi-Tenancy Planned 24–40h Scaling Preparations (recommended) prompt-multi-tenancy-super-admin.md
9 Internationalization Planned 24–32h Multi-Tenancy (stable User/Tenant schema) prompt-internationalization.md
10 Nx Cloud DTE Planned 8–12h None prompt-nx-cloud-dte-pipeline.md
11 Kimi Shopify Mockups Planned External None kimi_prompt_3d_organizers_studio_neat_inspired.md
12 Traefik Mesh Observability Planned 4–6h Scaling Preparations, ClickHouse + Grafana prompt-traefik-mesh-observability.md

Completed effort: ~36–54 hours (items 1–6)
Remaining estimated effort: 68–102 hours (excluding Kimi mockups which are an external design task)


Dependency Graph

uml diagram


Timeline View

uml diagram


Detailed Items

1. ClickHouse + Grafana Centralized Logging ✅

Priority Highest
Status Done
Effort 16–24 hours
Category Infrastructure / Observability
Prompt done/prompt-clickhouse-grafana-logging.md
Dependencies None

Summary: Migrate structured logging from Sentry Logs to a self-hosted ClickHouse + Grafana stack collected via OpenTelemetry. Sentry continues to handle error tracking, performance monitoring, and profiling — only the logging concern moves.

Key deliverables: - OpenTelemetry Collector receiving logs via OTLP gRPC - ClickHouse for high-performance columnar log storage with tiered TTL retention - Grafana dashboards for log visualization and alerting - Pino logger bridged to OTel replacing SentryLoggerService - Automated backups to DigitalOcean Spaces

uml diagram

Phases: 1. Deploy infrastructure (ClickHouse, OTel Collector, Grafana) — 1 day 2. Application integration with dual-write — 1 week 3. Build Grafana dashboards — 3–5 days 4. Cut over from Sentry Logs — 1 day 5. Cleanup and backups — 1 day


2. pgAdmin On-Demand Container ✅

Priority High
Status Done
Effort 8–12 hours
Category Infrastructure / DevTools
Prompt done/prompt-pgadmin-on-demand-container.md
Dependencies None

Summary: Move pgAdmin from an always-on container (~300 MB idle memory) to an on-demand container that administrators can start/stop from a UI toggle. Reduces memory pressure and attack surface.

Key deliverables: - Separate docker-compose.pgadmin.yml for independent lifecycle management - Backend API on Gateway for container start/stop/status - Frontend "Developer Tools" settings page with one-click toggle - Data persistence across stop/start cycles

uml diagram


3. Inventory & Stock Management

Status Done
Priority High
Effort 20–32 hours
Category Feature
Prompt done/prompt-inventory-stock-management.md
Dependencies None

Summary: Transition from pure print-to-order to a hybrid fulfillment model. Track inventory at the ProductMapping level (one stock unit = one complete set of all AssemblyParts). Setting minimumStock > 0 on a product enables automatic replenishment. Orders consume complete units from stock first, then print the remainder. Standard GridFlock grids (e.g., standard IKEA drawer sizes) can have stock management enabled.

Key deliverables: - Inventory fields on ProductMapping (currentStock, minimumStock, etc.) - StockBatch model to group pre-production PrintJobs into complete units - InventoryTransaction model for full audit trail - Stock-aware order fulfillment in OrchestrationService (consume units, print remainder) - Pre-production scheduler (cron-based, creates StockBatches) - Frontend inventory dashboard with stock levels, configuration, and transaction history

uml diagram

uml diagram


4. Stubs & Retry Handlers ✅

Priority High
Status Done
Effort 8–12 hours
Category Code Quality
Prompt prompt-implement-stubs-and-retry-handlers.md
Dependencies None

Summary: Replace all stub and placeholder implementations across microservices with working code. Audit services in shipping-service, gridflock-service, and print-service were no-op stubs; retry queue handlers for print job creation and cancellation were placeholders.

Key deliverables: - Real AuditService implementations in shipping-service, gridflock-service, and print-service (modeled on order-service reference) - Working FulfillmentService in shipping-service - PRINT_JOB_CREATION retry handler in order-service and shipping-service - CANCELLATION retry handler in order-service and shipping-service - Unit tests for all new implementations

uml diagram


5. SonarCloud Code Quality Integration ✅

Priority High
Status Done
Effort 1–2 hours
Category DevOps / Code Quality
Prompt done/prompt-sonarcloud-integration.md
Research ../../03-architecture/research/sonarqube-code-quality-research.md
Dependencies None

Summary: Integrate SonarCloud Team into the Azure DevOps CI/CD pipeline for continuous code quality analysis. Every push to main and every PR is analyzed for bugs, vulnerabilities, code smells, duplication, cognitive complexity, and test coverage. Results appear as inline PR comments with quality gate enforcement.

Key deliverables: - sonar-project.properties configuration at repo root - CodeQuality job in the ValidateAndTest pipeline stage - PR decoration with quality gate status on Azure DevOps - Coverage integration (Vitest/Jest lcov → SonarCloud) - Rule suppression management via sonar.issue.ignore.multicriteria - Issue triage reports: 2026-03-12, 2026-03-13

Results (first 2 days):

Metric Before After Change
Issues 769 244 -68%
Bugs 9 0 -100%
Vulnerabilities 12 0 -100%
Duplication 19.5% 15.7% -3.8pp
Security hotspots 6 0 resolved

6. CodeCharta City Visualization ✅

Priority High
Status Done
Effort 2–4 hours
Category DevOps / Observability
Prompt done/prompt-codecharta-city-visualization.md
Research ../../03-architecture/research/codecharta-city-visualization-research.md
Dependencies SonarCloud (API data required)

Summary: Integrate CodeCharta into the CI/CD pipeline to generate a 3D city map from SonarCloud metrics + git history. The .cc.json file is baked into the existing docs Docker image and served with CORS headers so the publicly hosted CodeCharta Web Studio can visualize the codebase as a navigable 3D city.

Key deliverables: - GenerateCodeCharta pipeline job using codecharta/codecharta-analysis Docker image - Merged .cc.json combining SonarCloud metrics (complexity, code smells, coverage, tech debt) with git history (authors, commits, churn) - CORS-enabled Nginx location block (/codecharta/) on the docs container - Downloadable .cc.json served from the docs site (shareable ?file= URLs blocked by CodeCharta's CSP — users download and drag-and-drop instead) - CodeCharta link in the Settings page Help & Support section (admin-only)

uml diagram


7. Scaling Preparations

Priority Medium
Effort 8–12 hours
Category Infrastructure
Prompt prompt-scaling-preparations.md
Dependencies None (recommended before Multi-Tenancy)

Summary: Prepare the current Docker Compose deployment for a seamless future migration to DigitalOcean Managed Kubernetes. No Kubernetes tooling is installed — the system stays on Docker Compose but becomes "K8s-ready."

Key deliverables: - DNS TTLs lowered to 60s for fast future cut-over (<1 min propagation) - Container registry hygiene with semantic image tagging - Standardized HTTP health checks (/health/live + /health/ready) - Graceful shutdown handling (SIGTERM) - Configuration externalization audit - Resource constraints on all services - Statelessness verification

Important: DigitalOcean Reserved IPs can only be assigned to Droplets, not Load Balancers. The migration strategy uses a DNS-based cut-over: update A records from Droplet IP to LB's stable IP. With 60s TTLs pre-configured, propagation takes under a minute.

uml diagram

Migration path:

uml diagram


8. Multi-Tenancy + Super Admin

Priority Medium
Effort 24–40 hours
Category Architecture
Prompt prompt-multi-tenancy-super-admin.md
Dependencies Scaling Preparations (recommended)

Summary: Extend the existing tenant-ready infrastructure to support multiple active tenants with complete data isolation, super admin role for cross-tenant management, and webhook routing for multi-tenant inbound traffic.

Key deliverables: - isSuperAdmin flag on User model - Super admin tenant switching (session-based) - Tenant management API (list, create, switch) - Repository tenant enforcement (compound WHERE clauses on all mutations) - tenantId added to all domain DTOs - Webhook multi-tenant routing (Shopify shop → tenant) - Frontend tenant switcher component

uml diagram


9. Internationalization & Per-User Locale Preferences

Priority Medium
Effort 24–32 hours
Category Feature
Prompt prompt-internationalization.md
Research ../../03-architecture/research/internationalization-research.md
Dependencies Multi-Tenancy (stable User/Tenant schema)

Summary: Implement full internationalization with per-user locale preferences. A two-tier resolution chain (user → tenant → system default) allows tenants to set organization-wide defaults while individual users override language, timezone, date/time format, measurement units, and first day of week.

Key deliverables: - Per-user locale fields on User model (nullable, inherits from tenant) - Tenant-level locale defaults on Tenant model - react-i18next with namespace-based lazy loading (English + Dutch placeholders) - Locale-aware formatting hooks (useFormatDate, useFormatNumber, useMeasurement) - Backend locale middleware for email and notification localization - "Language & Region" settings section with live preview - ESLint rule to prevent new hardcoded strings in JSX - CI translation completeness check

uml diagram

Locale dimensions covered:

Dimension Example values
Language English, Dutch, French, German
Timezone Europe/Brussels, America/New_York
Date format DD/MM/YYYY, MM/DD/YYYY, YYYY-MM-DD
Time format 24h (14:30), 12h (2:30 PM)
Measurement Metric (cm, kg), Imperial (in, lb)
First day of week Monday (EU), Sunday (US)
Number format 1.490,00 (NL) vs 1,490.00 (EN)
Currency display € 1.490,00 (NL-BE) vs €1,490.00 (EN)

10. Nx Cloud DTE Pipeline

Priority Low
Effort 8–12 hours
Category DevOps
Prompt prompt-nx-cloud-dte-pipeline.md
Dependencies None

Summary: Integrate Nx Cloud with Distributed Task Execution into the Azure DevOps CI/CD pipeline. Collapse sequential Validate → Test → Build stages into a single distributed stage for feature branches, dramatically reducing CI pipeline duration.

Key deliverables: - Nx Cloud workspace connection with remote caching - Manual DTE with Azure agent jobs (3 agents + 1 orchestrator) - Feature branch: single CI stage (lint + typecheck + test distributed) - Main branch: DTE for validation + unchanged Docker packaging - Graceful fallback when Nx Cloud is unavailable

uml diagram


11. Kimi Shopify Store Mockups

Priority Lowest
Effort External design task
Category Design
Prompt kimi_prompt_3d_organizers_studio_neat_inspired.md
Dependencies None

Summary: Create high-fidelity mockups for the Forma3D Shopify store (homepage, PDP, grid configurator, collection page) using a Studio Neat-inspired minimal aesthetic. This is an external design task for Kimi AI, independent of all technical development work.

Key deliverables: - Homepage mockup (desktop + mobile) - Product Detail Page for a plate organizer - Custom grid configurator page - Collection page - Design system tokens (colors, typography, spacing, buttons)


12. Traefik Mesh Observability

Priority Medium
Effort 4–6 hours
Category Observability
Prompt prompt-traefik-mesh-observability.md
Dependencies Scaling Preparations (Traefik Mesh installed), ClickHouse + Grafana (OTel pipeline)

Summary: Integrate Traefik Mesh's Prometheus metrics into the existing OTel Collector → ClickHouse → Grafana pipeline. The existing stack answers "what happened inside a service?" (application logs). Mesh metrics answer "what's happening between services?" — completing full-stack observability.

Key deliverables: - Prometheus receiver in OTel Collector scraping Traefik Mesh proxy pods - ClickHouse otel_metrics table with 90-day TTL retention - Grafana "Service Mesh Traffic" dashboard (request rates, latency percentiles, error rates, mTLS status per service pair) - Alerting rules for inter-service error rate spikes, latency anomalies, and mesh proxy health - Works consistently across local dev (Rancher Desktop + Tilt), staging, and production (DOKS)


Architecture Context

For reference, this is how the roadmap items relate to the overall system architecture:

uml diagram


Risk Assessment

Item Risk Mitigation
SonarCloud Monthly cost ($32/month) Trivial vs. engineering time saved; offloads static analysis infrastructure
ClickHouse + Grafana Resource pressure on 4 GB Droplet Upsize to 8 GB before deploying; consider Scaling Preparations first
pgAdmin On-Demand Docker socket security in Gateway Mount read-only; restrict to ADMIN on default tenant
Stock Management Race conditions on stock consumption Database transactions with WHERE currentStock >= needed on ProductMapping
Scaling Preparations DNS propagation delay during future cut-over TTLs lowered to 60s now; future cut-over propagates in <1 min
Multi-Tenancy Cross-tenant data leakage Compound WHERE clauses; comprehensive test coverage
Nx Cloud DTE CI regression if Nx Cloud is down disableDTE parameter as fallback escape hatch
Kimi Mockups Design-development alignment Iterate on mockups before Shopify implementation
Internationalization String extraction misses hardcoded text; German text overflow breaks layout ESLint no-literal-string rule; design with 30% text expansion buffer; CI completeness check
Traefik Mesh Observability Metrics volume growing ClickHouse storage 90-day TTL auto-deletes old metrics; 15s scrape interval keeps volume manageable

Decision Log

Date Decision Rationale
2026-03-14 CodeCharta City Visualization (item 6) added to roadmap as done Integrated CodeCharta into CI/CD pipeline; generates 3D city map from SonarCloud + git history, served from docs container with CORS headers; renumbered items 6–12
2026-03-13 SonarCloud Integration (item 5) added to roadmap as done Integrated SonarCloud Team into Azure DevOps CI/CD pipeline; reduced issues from 769 → 244, eliminated all bugs and vulnerabilities; renumbered items 5–11
2026-03-10 Internationalization (item 8) added to roadmap i18n research completed; per-user locale preferences needed for EU market expansion beyond Belgium/Netherlands
2026-03-10 Stubs & Retry Handlers (item 4) added to roadmap as done Prompt was completed 2026-02-28 but never tracked in roadmap; added retroactively for completeness
2026-03-10 Roadmap renumbered (items 4–11) Added new items (Stubs & Retry Handlers, Internationalization, SonarCloud); renumbered all items to maintain logical order. Later renumbered to 4–12 with CodeCharta addition.
2026-03-09 Item 3 (Stock Management) marked as done Feature fully implemented across 7 AI sessions: inventory tracking, stock replenishment, stock-aware fulfillment, manual adjustments, feature flags, acceptance tests
2026-03-02 Items 1 (ClickHouse + Grafana) and 2 (pgAdmin On-Demand) marked as done Both infrastructure items completed; next priority is Stock Management and Scaling Preparations
2026-02-19 ClickHouse + Grafana is highest priority Sentry Logs is a metered feature; self-hosting provides cost control, better retention, and data sovereignty
2026-02-19 Scaling Preparations before Multi-Tenancy Reserved IP must be in place before any infrastructure migration; health checks and statelessness are prerequisites for horizontal scaling
2026-02-19 Nx Cloud is lower priority CI is functional; DTE is an optimization, not a blocker
2026-02-19 Kimi mockups are independent Design work can proceed in parallel with all technical work


Human Estimate vs AI Actual — Completed Items

For completed roadmap items, the following compares the original human team estimates with actual AI implementation time:

Item Human Estimate AI Actual Acceleration Notes
ClickHouse + Grafana Logging 16–24 hours ~4 hours ~5x Infrastructure + 5-service integration in one session
pgAdmin On-Demand Container 8–12 hours ~2 hours ~5x Backend API, frontend UI, Docker orchestration
SonarCloud Integration 1–2 hours ~1 hour ~1.5x Pipeline setup, config, and initial triage
SonarCloud Issue Remediation 16–24 hours ~4 hours ~5x 525 issues fixed, 12,900 duplicated lines extracted to shared lib
Completed Total 41–62 hours ~11 hours ~5x

Context: Full Project Acceleration History

Phase Group Human Estimate AI Duration Acceleration
Phases 0–7 (Core platform) 26.5 weeks 10 days 18.5x
Phases 8–9 (RBAC + OAuth) 4 weeks 15 days ~1.9x
Phase 10 (Ops Intelligence) 2 weeks 9 days ~1.6x
Phase 11 (Microservices) 8 weeks 5 days ~11x
Phase 12 (Platform Maturity) 3 weeks 5 days ~4.2x
Phase 13 (Preview Infra) 2 weeks 8 days ~1.8x
Full project (Phases 0–13) 48.5 weeks 53 days 6.4x

Key insight: AI acceleration is highest for well-defined implementation tasks (microservices split: 11x, core development: 18.5x) and lowest for tasks involving heavy research, real-world testing, and human judgment (RBAC: 1.9x, ops intelligence: 1.6x). Stock Management confirmed this pattern — it required 7 AI sessions, heavy human QA, and produced 15 gaps (67% found by the human). The remaining roadmap items (Multi-Tenancy, Scaling) involve significant domain modeling and real-world integration, suggesting 2-4x acceleration is a realistic expectation.

Estimated remaining effort with AI: 16–28 hours (vs. 68–102 hours human estimate for items 7–10, 12)


This roadmap is a living document. Update priorities and dependencies as work progresses and requirements evolve.