How bhatthiman/osep works
OSEP is an early-stage static-equipment design platform. An engineer creates or loads a project, adds and edits components, then requests a preview; the backend validates component data, builds CAD solids, and exports STL for the frontend viewer. The sampled code also shows project save/load and STEP export. The README describes broader calculation, drawing, and analysis ambitions, but their implementation is not established by the sampled sources. Frontend-to-backend transport details are not shown, so that connection is marked unverified.
Main entry points: component_registry.py Component registry · App.jsx Application · project_manager.py Project manager · router.py API router
Components 26
Design interface
- Application
frontend/src/App.jsx - Component library
frontend/src/components/ComponentLibrary.jsx - Project structure
frontend/src/components/ProjectStructure.jsx - Property editor
frontend/src/components/PropertyEditor.jsx - 3D viewer
frontend/src/viewer/Viewer.jsx - STL model
frontend/src/viewer/STLModel.jsx - API client
frontend/src/services/api.js
Project API
- FastAPI app
backend/app/main.py - API router
backend/app/api/router.py - Project routes
backend/app/api/routes/projects.py - Component routes
backend/app/api/routes/components.py - Build routes
backend/app/api/routes/build.py
Project and schemas
- Project manager
backend/app/core/project_manager.py - Project schema
backend/app/schema/project.py - Component schema
backend/app/schema/component.py - Cylinder schema
backend/app/schema/cylinder.py - Head schema
backend/app/schema/head.py - Engineering calculations
backend/app/calculations - Materials
backend/app/materials
CAD generation
- Component registry
backend/app/core/component_registry.py - Geometry dispatcher
backend/app/geometry/dispatcher.py - Cylinder builder
backend/app/geometry/cylinder_builder.py - Head builder
backend/app/geometry/head_builder.py - Preview exporter
backend/app/exporters/preview_exporter.py
Other components
- Engineer
- STL output
backend/outputs
Connections 28
- Engineer → Application: uses
frontend/src/App.jsx - Application → Component library: renders
frontend/src/App.jsx - Application → Project structure: renders
frontend/src/App.jsx - Application → Property editor: renders
frontend/src/App.jsx - Application → 3D viewer: renders
frontend/src/App.jsx - 3D viewer → STL model: renders
frontend/src/viewer/Viewer.jsx - Application → API client: calls
frontend/src/App.jsx - API client → API router: sends requests
- FastAPI app → API router: mounts
backend/app/main.py - API router → Project routes: registers
backend/app/api/router.py - API router → Component routes: registers
backend/app/api/router.py - API router → Build routes: registers
backend/app/api/router.py - Project routes → Project manager: calls
backend/app/api/routes/projects.py - Project routes → Preview exporter: exports preview
backend/app/api/routes/projects.py - Component routes → Component registry: queries types
backend/app/api/routes/components.py - Project manager → Project schema: loads and saves
backend/app/core/project_manager.py - Project manager → Geometry dispatcher: builds components
backend/app/core/project_manager.py - Project manager → Component registry: validates updates
backend/app/core/project_manager.py - Geometry dispatcher → Component registry: gets builders
backend/app/geometry/dispatcher.py - Component registry → Cylinder schema: registers
backend/app/core/component_registry.py - Component registry → Head schema: registers
backend/app/core/component_registry.py - Component registry → Cylinder builder: registers
backend/app/core/component_registry.py - Component registry → Head builder: registers
backend/app/core/component_registry.py - Project schema → Component schema: contains type
backend/app/schema/project.py - Cylinder builder → Cylinder schema: builds from
backend/app/geometry/cylinder_builder.py - Head builder → Head schema: builds from
backend/app/geometry/head_builder.py - Preview exporter → STL output: writes STL
- Project manager → Preview exporter: STEP export