Skip to main content

Introduction to Cascadia PLM

Cascadia is an open-source, code-first Product Lifecycle Management (PLM) system built with TanStack Start. It replaces traditional low-code PLM systems (like Aras Innovator) with a developer-centric, type-safe approach where all customization happens in code, not through UI configuration.

Key Philosophy

  • Code-First Configuration - TypeScript everywhere with full IDE support
  • Enterprise-Ready - PostgreSQL backend with proven scalability
  • Extensible Architecture - Event-driven design for custom workflows and integrations

Technology Stack

LayerTechnology
FrameworkTanStack Start (full-stack TypeScript with file-based routing)
DatabasePostgreSQL 18+ with Drizzle ORM
UITailwind CSS 4 + Radix UI components
Auth@oslojs/crypto + @oslojs/encoding + Arctic (OAuth)
ValidationTanStack Form + Zod
Graph VisualizationReact Flow (@xyflow/react) + Dagre for layout
TestingVitest + Playwright

Core Features

Item Type Registry Pattern

The system uses a Registry Pattern for managing different item types. All item types:

  1. Extend the BaseItem interface
  2. Have a Zod schema for validation
  3. Register their configuration including UI components, permissions, and metadata
  4. Share a common items table for base fields + type-specific tables for additional fields

Built-In Item Types

Item TypeDescription
PartManufacturing parts with BOM relationships
DocumentFile attachments and documentation
Change OrderECO/ECN change management
RequirementRequirements tracking
TaskWork items with Kanban support

Organizational Hierarchy

  • Program - Business initiative/contract (permission boundary)
  • Product - Version container for items (maps to SysML Project)

Git-Style Versioning

Cascadia supports SysML 2.0-inspired versioning:

  • Products as version containers with branches and commits
  • Branches for ECOs and workspaces (main, eco/*, workspace/*)
  • Commits as immutable snapshots with parent chain
  • Tags for named baselines

Why Cascadia?

Traditional PLMCascadia PLM
Configure item types through UI wizardsDefine types in TypeScript with full IDE support
Export/import XML for version controlGit-native configuration with code review
Proprietary scripting languagesStandard TypeScript/JavaScript ecosystem
Vendor lock-in with licensing feesOpen source with AGPL license
Black-box deploymentsDocker/Kubernetes with full control

Next Steps