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 | Done | 16–24h | None | done/prompt-clickhouse-grafana-logging.md |
|
| 2 | Done | 8–12h | None | done/prompt-pgadmin-on-demand-container.md |
|
| 3 | Done | 20–32h | None | done/prompt-inventory-stock-management.md |
|
| 4 | Done | 8–12h | None | prompt-implement-stubs-and-retry-handlers.md |
|
| 5 | Done | 1–2h | None | done/prompt-sonarcloud-integration.md |
|
| 6 | 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¶
Timeline View¶
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
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
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
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
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)
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.
Migration path:
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
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
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
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:
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.