01 · Code boundaries
Separate responsibilities for domain, GPU and interface
The Frontend monorepo contains three packages: core, renderer and web. Core calculates sampling, directions, layout, budgets and metadata without React, Three.js, DOM or networking. Renderer owns loaders, pose evaluation, the camera and WebGL2 resources. The application organizes interaction, selections and jobs.
Dependencies follow web → renderer → core, with direct access from web to core. Public entrypoints keep packages from depending on each other's internal files. Composition and small interfaces support Strategy for styles, Factory for loaders and a capture facade, without a central class responsible for the entire scene.
| Layer | Responsibility | Decision |
|---|---|---|
| core · TypeScript | Frames, angles, CapturePlan, sheets and JSON | Domain rules independent of the GPU |
| renderer · Three.js / WebGL2 | Import, pose, materials and pixels | Explicit resource lifecycle |
| web · React | Workspaces, state and orchestration | Scene/GPU outside React rendering |
| Desktop · C# / WPF | WebView2, files and optimization | DesktopHost port and versioned messages |
| API · ASP.NET Core | Service foundation and health checks | Independent of the editor and bake |