Comprehensive technology inventory for the Forma3D.Connect platform.
Last updated: March 2026
How This Stack Came to Be
The Forma3D.Connect technology stack is the product of an ongoing dialogue between a human developer and AI. Rather than picking technologies from a trend list or defaulting to a familiar boilerplate, every choice emerged from a structured conversation that weighed three criteria:
-
AI fluency — Which technologies does the AI deeply understand, enabling it to generate high-quality code, catch subtle bugs, and reason about architecture? Technologies with large, well-documented ecosystems and widespread adoption in training data give AI the strongest foundation to contribute as a true co-developer.
-
Human preference — Which technologies does the developer already know and trust from years of hands-on experience? Familiarity means faster code reviews, confident debugging, and the ability to course-correct AI output when it drifts. The human brings battle-tested intuition about what works in production.
-
Project fit — Which technologies are objectively the best match for what Forma3D.Connect needs to do? Real-time WebSocket communication, 3D model generation, Progressive Web App capabilities, multi-tenant microservices, and integrations with e-commerce and print farm platforms all impose hard requirements that narrow the field.
The final stack sits at the intersection of these three circles — technologies where AI capability, human expertise, and project demands all converge. This was not a one-time decision: the initial choices came out of early conversations between the human and AI, and the stack evolved organically as the project progressed. New tools were adopted when all three criteria aligned, and alternatives were discarded when they fell short on any axis.

Languages
| Technology |
Usage |
| TypeScript |
Primary language — frontend, backend, shared libs, scripts |
| JavaScript |
k6 load tests, Slicer API (BambuStudio wrapper) |
| Shell (Bash) |
Deployment, registry, backup, and build-agent scripts |
| SQL |
Prisma migrations, raw queries |
| Gherkin |
Acceptance test feature files (Cucumber/BDD) |
| Python |
Zensical docs site toolchain (plantuml-markdown) |
| Markdown |
Documentation, ADRs, runbooks, prompts, README files |
| PlantUML |
Architecture diagrams (C4, ERD, sequences, state machines) |
Frontend
| Technology |
Version |
Purpose |
| React |
19 |
UI framework |
| Vite |
7 |
Build tooling and dev server |
| Tailwind CSS |
4 |
Utility-first styling |
| TanStack Query |
5 |
Server state management |
| React Router |
6 |
Client-side routing |
| Headless UI |
2 |
Accessible UI primitives |
| Heroicons |
2 |
Icon library |
| ECharts |
6 |
Dashboard charts and visualizations |
| Socket.IO Client |
4 |
Real-time WebSocket communication |
| Zod |
4 |
Schema validation |
| clsx |
— |
Conditional className utility |
| date-fns |
4 |
Date formatting and manipulation |
| react-hot-toast |
2 |
Toast notifications |
| idb |
8 |
IndexedDB wrapper for offline storage |
Progressive Web App (PWA)
| Technology |
Purpose |
| vite-plugin-pwa |
PWA integration with Vite (injectManifest strategy) |
| Workbox |
Service worker tooling (precaching, routing, strategies, expiration) |
| web-push |
Server-side push notification delivery |
| @vite-pwa/assets-generator |
PWA icon and splash screen generation |
Backend
| Technology |
Version |
Purpose |
| Node.js |
≥20 |
Runtime |
| NestJS |
11 |
Application framework |
| Express |
5 |
HTTP server (NestJS platform) |
| Prisma |
5 |
ORM and database client |
| Socket.IO |
4 |
Real-time WebSocket server |
| BullMQ |
5 |
Distributed job/event queues |
| Bull Board |
6 |
Queue monitoring dashboard |
| Nodemailer |
7 |
Transactional email sending |
| Handlebars |
4 |
Email templates |
| Helmet |
8 |
HTTP security headers |
| Swagger / OpenAPI |
— |
Auto-generated API documentation (@nestjs/swagger) |
| Pino |
10 |
Structured JSON logging |
| argon2 |
— |
Password hashing (argon2id) |
| express-session |
— |
Session-based authentication |
| connect-redis |
— |
Redis-backed session store |
| class-validator / class-transformer |
— |
DTO validation and transformation |
| RxJS |
7 |
Reactive programming (NestJS internals, event streams) |
| axios |
— |
HTTP client for external API calls |
| http-proxy-middleware |
— |
API gateway proxying |
| @nestjs/throttler |
— |
Rate limiting |
| @nestjs/schedule |
— |
Cron jobs and scheduled tasks |
| @nestjs/terminus |
— |
Health checks |
| @nestjs/microservices |
— |
Inter-service communication |
| @nestjs/event-emitter |
— |
In-process event bus |
| @nestjs/cache-manager |
— |
Caching layer |
Microservices
| Service |
Responsibility |
| Gateway |
API gateway, auth, sessions, WebSocket proxy, Swagger aggregation |
| Order Service |
Orders, Shopify webhooks, fulfillment, inventory |
| Print Service |
Print jobs, SimplyPrint integration |
| Shipping Service |
Shipments, SendCloud integration |
| GridFlock Service |
Gridfinity STL generation pipeline |
| Slicer |
BambuStudio-based 3D model slicing (Node.js/Express wrapper) |
3D / STL Generation
| Technology |
Purpose |
| JSCAD (@jscad/modeling) |
Programmatic 3D geometry (Gridfinity baseplates) |
| @jscad/stl-serializer |
STL binary output from JSCAD models |
| BambuStudio (Slicer) |
G-code slicing for 3D printers (containerized) |
Database & Data
| Technology |
Purpose |
| PostgreSQL |
Primary relational database |
| Prisma ORM |
Schema-first migrations, type-safe queries |
| prisma-uml |
ERD generation from Prisma schema |
| Redis 7 |
Session store, Socket.IO adapter, BullMQ broker, caching |
| ClickHouse |
Log storage and analytics (OpenTelemetry sink) |
External Integrations (SaaS)
| Service |
Purpose |
| Shopify |
E-commerce platform — orders, webhooks, OAuth, product sync |
| SimplyPrint |
Print farm management — print jobs, printer status |
| SendCloud |
Shipping — labels, tracking, carrier integration |
Cloud & Infrastructure
| Technology |
Purpose |
| DigitalOcean Droplets |
Application hosting (staging, production) |
| DigitalOcean Container Registry |
Docker image registry |
| DigitalOcean Spaces |
Object storage (ClickHouse log backups) |
| Docker |
Application containerization |
| Docker Compose |
Multi-container orchestration |
| Traefik 3 |
Reverse proxy, TLS termination, routing |
| Let's Encrypt |
Automated TLS certificate provisioning (via Traefik ACME) |
| Nginx |
Static file serving (web app, docs, CodeCharta) |
CI/CD
| Technology |
Purpose |
| Azure DevOps Pipelines |
CI/CD orchestration (build, test, deploy) |
| Nx (affected) |
Incremental builds, task orchestration, dependency graph |
| Docker Buildx |
Multi-stage container builds |
| Self-hosted build agents |
DigitalOcean Droplet build runners |
Pipeline Stages
Validate & Test → Code Quality (SonarCloud) → Build & Package → CodeCharta → Deploy Staging → Acceptance Tests + Lighthouse Audit → Attest Staging → Load Tests → Production
Observability & Monitoring
| Technology |
Purpose |
| Sentry |
Error tracking, performance monitoring, profiling (frontend + backend) |
| OpenTelemetry |
Distributed tracing and log collection |
| OpenTelemetry Collector |
Telemetry pipeline (traces → ClickHouse) |
| Grafana |
Dashboards and log visualization (ClickHouse datasource) |
| ClickHouse |
Log and trace storage |
| Uptime Kuma |
Uptime monitoring and status page |
| Dozzle |
Real-time Docker log viewer |
| Pino |
Structured application logging |
Security
| Technology |
Purpose |
| Syft |
SBOM generation (CycloneDX) — open-source by Anchore, run in CI/CD |
| Grype |
CVE vulnerability scanning — open-source by Anchore, run in CI/CD |
| license-checker-rseidelsohn |
Dependency license compliance — fail CI on GPL/AGPL/SSPL |
| Cosign (Sigstore) |
Container image signing and verification |
| Helmet |
HTTP security headers |
| argon2 |
Password hashing |
Code Quality & Analysis
| Technology |
Purpose |
| SonarCloud |
Static analysis, code smells, coverage tracking, architecture enforcement |
| CodeCharta |
3D city visualization of code metrics (from SonarCloud + git) |
| ESLint 9 |
Linting (TypeScript, React, JSX a11y, import rules) |
| Prettier |
Code formatting |
Testing
| Technology |
Purpose |
| Vitest |
Frontend unit tests |
| Jest |
Backend unit tests |
| Testing Library |
React component testing (react, user-event, jest-dom) |
| MSW (Mock Service Worker) |
API mocking for frontend tests |
| SuperTest |
HTTP integration testing for NestJS |
| Playwright |
End-to-end browser testing |
| playwright-bdd |
BDD layer for Playwright (Gherkin features) |
| k6 |
Load and performance testing |
| Lighthouse CI (@lhci/cli) |
Performance, accessibility, best practices, and SEO auditing |
Documentation
| Technology |
Purpose |
| Zensical |
Documentation site generator (hosted, auto-built in pipeline) |
| PlantUML (plantuml-markdown) |
Architecture diagrams rendered to SVG during build |
| EventCatalog |
Event-driven architecture documentation (services, events, flows) |
| Swagger / OpenAPI |
Auto-generated API reference |
| ADRs (Architecture Decision Records) |
Architectural decision log (66+ records) |
| Technology |
Purpose |
| Cursor IDE |
Primary development environment |
| Claude Opus 4.6 |
Primary AI model (code generation, refactoring, architecture) |
| SpecStory |
AI conversation history and context persistence (780+ sessions) |
| Nanoclaw |
Agentic AI team framework (Docker-isolated agents) |
| Nx MCP Server |
Nx workspace intelligence for AI agents |
| .cursorrules / AGENTS.md |
AI behavior rules and workspace conventions |
Agentic Team (Nanoclaw)
| Agent |
Role |
| Cody Codewell |
Software Engineer |
| Ryan "Ops" O'Malley |
DevOps Engineer |
| Sam "Rack" Reynolds |
Infrastructure Engineer (planned) |
Build & Package Management
| Technology |
Purpose |
| Nx 22 |
Monorepo task runner, project graph, affected commands |
| pnpm 9 |
Package manager |
| Vite 7 |
Frontend bundler |
| Webpack |
Backend bundler (NestJS services) |
| SWC |
Fast TypeScript/JavaScript compilation |
| ts-node / tsx |
TypeScript execution for scripts and seeds |
Key Architectural Patterns
| Pattern |
Implementation |
| Monorepo |
Nx with strict library boundaries |
| Microservices |
5 NestJS services + API gateway |
| Event-driven |
BullMQ + Redis for async inter-service events |
| RBAC |
Tenant → User → Role → Permission (PostgreSQL) |
| PWA |
Service worker, offline support, push notifications |
| Schema-first |
Prisma schema as single source of truth |
| C4 Model |
Context, Container, Component, Code diagrams |
| Trunk-based development |
Short-lived branches, CI gates |
Visual Stack Diagram
