Introduction
PrintStudio is a production-grade manufacturing pipeline and storefront for hybrid 3D print + laser fabrication shops. It connects a customer-facing configurator directly to a physical machine fleet — handling pricing, job scheduling, printer routing, inventory, and fulfilment in one coherent system.
┌──────────┐ ┌──────────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐│ Customer │──▶│ Configurator │──▶│ Order │──▶│ Pricing │──▶│ Queue │└──────────┘ └──────────────┘ └─────────┘ └──────────┘ └────┬─────┘ │ ┌──────▼─────┐ │ Router │ └──────┬─────┘ │ ┌──────────┐ ┌──────────┐ ┌────────────┐ ┌──────▼─────┐ │ Ship │◀──│ Ready │◀──│ Post-Proc │◀─│ Printer │ └──────────┘ └──────────┘ └────────────┘ └────────────┘Core Philosophy
Section titled “Core Philosophy”SKU-first — Every product is a pre-costed template. Margins are known before the first gram is extruded. Operators define SKUs with material, machine type, estimated print time, and quality tier; the pricing engine computes a floor price automatically.
Queue-driven — Jobs move through a typed state machine enforced by BullMQ workers. No ad-hoc execution, no manual status updates. Every transition is logged and auditable.
Profit-per-machine-hour — The router assigns jobs to maximise utilisation and margin, not just throughput. A Bambu X1C running fast draft prints for a low-margin order may be held back for a high-margin functional part.
Feature Overview
Section titled “Feature Overview”| Feature | Description |
|---|---|
| Product Configurator | Customer-facing form builder backed by 408 Zod schemas in packages/domain |
| Pricing Engine | base + material + print_time × demand × quality multipliers, rush surcharges, batch discounts |
| Job State Machine | 49 typed transitions across 8 states, enforced by BullMQ workers |
| Printer Router | Assigns jobs to optimal machine by type, capacity, and margin targets |
| Inventory Tracker | Filament/resin/laser stock tracking; auto-blocks jobs when insufficient |
| AutoPilot Orchestrator | Monitors fleet, auto-routes, retries failures, batches compatible jobs |
| Operator Dashboard | Real-time job board, printer status, revenue analytics |
| Setup Wizard | 6-step guided onboarding for connecting infrastructure |
| REST API | 100+ endpoints with OpenAPI spec and Scalar interactive UI |
Technology Stack
Section titled “Technology Stack”| Layer | Technology |
|---|---|
| Frontend | Astro 6 (SSR) |
| API server | Hono + Bun |
| Database | PostgreSQL 16 + Drizzle ORM |
| Queue | BullMQ + Redis 7 |
| Schema validation | Zod (408 schemas) |
| Payments | Stripe |
| Observability | Prometheus + Grafana |
| Runtime | Bun 1.3 |
| Build pipeline | Turborepo |
Key Concepts
Section titled “Key Concepts”A SKU is the atomic unit of production. It specifies: the product type, material, machine type, quality tier, estimated print time, and base cost. Every order line item maps to exactly one SKU, which means every job has a known cost before it starts.
Jobs vs Orders
Section titled “Jobs vs Orders”An order is what a customer places. A job is a single printable item that maps to one SKU on one machine. An order with three items becomes three jobs, each independently scheduled, routed, and tracked.
State Machine
Section titled “State Machine”Every job progresses through 8 states: CREATED → VALIDATED → SLICED → QUEUED → PRINTING → POST_PROCESS → READY → SHIPPED. Each transition is a BullMQ job; failures are retried with backoff and escalated to operators via OpenClaw if retries are exhausted.
Ready to run PrintStudio locally? See the Quick Start guide.