Files
c0de.it/docs/rack-planner/architecture.md
Lars Gebhardt-Kusche 98dd388fda
All checks were successful
Deploy / deploy (push) Successful in 14s
asdasd
2026-05-15 22:15:31 +02:00

123 lines
2.6 KiB
Markdown

# System Architecture
## Overview
The system should be built as a web platform with a thin, responsive client and a server-side core for persistence, catalog management, plugin validation, and export generation.
## Main building blocks
### Frontend
- browser-based single-page application
- visual rack editor
- component library browser
- BOM and cable views
- import/export screens
### Backend API
- project CRUD
- component catalog API
- plugin upload and validation
- bill of materials generation
- cable estimation service
- authentication and authorization
### Database
- users
- projects
- rack definitions
- component instances
- cable links
- plugin manifests
- catalog components
### Asset storage
- component `SVG` files
- optional `glTF` assets
- import files
- generated exports such as `CSV` and `PDF`
## Recommended domain model split
### Planning domain
- racks
- placements
- connections
- validation rules
### Catalog domain
- components
- manufacturers
- plugin packs
- pricing metadata
### Output domain
- BOM
- exports
- printable documentation
## Rendering approach
For V1, prefer a 2D editor based on `SVG`.
Reasons:
- precise snap and measurement handling
- easier labeling and overlays
- simpler hit-testing for drag and resize interactions
- lower implementation cost than a full 3D editor
3D can be added later as a secondary visualization layer using `glTF` assets and `Three.js`.
## Plugin ingestion approach
Do not load arbitrary CAD files directly into the editor runtime.
Use a controlled import pipeline:
1. user uploads a plugin package
2. backend validates manifest and metadata
3. backend validates assets and dimensions
4. optional CAD conversion creates internal preview assets
5. approved components become available in the catalog
This keeps the editor stable and the plugin model secure.
## Deployment model
### Public SaaS mode
- hosted centrally
- user accounts and teams
- shared component packs
- subscription or usage-based pricing possible later
### Self-hosted mode
- optional future enterprise offering
- internal catalogs
- private component packs
## Security considerations
- signed or verified plugin packs if third-party distribution is allowed
- strict asset and file-type validation
- no execution of untrusted code in plugins
- server-side permission checks for project access
- rate limits on public endpoints
## Scaling considerations
- stateless API instances
- database-backed persistence
- object storage for assets
- asynchronous jobs for heavy imports and exports
This is enough for an internet-facing product without overengineering the first release.