75 lines
2.0 KiB
Markdown
75 lines
2.0 KiB
Markdown
# Monorepo Project Structure
|
|
|
|
This diagram shows the monorepo structure with shared projects used by both API and Compute services.
|
|
|
|
```mermaid
|
|
graph TD
|
|
ROOT[Managing.sln<br/>Monorepo Root]
|
|
|
|
ROOT --> API[Managing.Api<br/>API Server<br/>Orleans]
|
|
ROOT --> COMPUTE[Managing.Compute<br/>Worker App<br/>No Orleans]
|
|
|
|
ROOT --> SHARED[Shared Projects]
|
|
|
|
SHARED --> APP[Managing.Application<br/>Business Logic]
|
|
SHARED --> DOM[Managing.Domain<br/>Domain Models]
|
|
SHARED --> INFRA[Managing.Infrastructure<br/>Database/External]
|
|
SHARED --> COMMON[Managing.Common<br/>Utilities]
|
|
|
|
API --> APP
|
|
API --> DOM
|
|
API --> INFRA
|
|
API --> COMMON
|
|
|
|
COMPUTE --> APP
|
|
COMPUTE --> DOM
|
|
COMPUTE --> INFRA
|
|
COMPUTE --> COMMON
|
|
|
|
style ROOT fill:#9B59B6
|
|
style API fill:#4A90E2
|
|
style COMPUTE fill:#50C878
|
|
style SHARED fill:#FFD93D
|
|
```
|
|
|
|
## Project Organization
|
|
|
|
### Root Level
|
|
- **Managing.sln**: Solution file containing all projects
|
|
|
|
### Service Projects
|
|
- **Managing.Api**: API Server with Orleans
|
|
- Controllers, Orleans grains, HTTP endpoints
|
|
- Handles user requests, creates jobs
|
|
|
|
- **Managing.Compute**: Compute Worker App (NEW)
|
|
- Background workers, job processors
|
|
- No Orleans dependency
|
|
- Dedicated CPU processing
|
|
|
|
### Shared Projects
|
|
- **Managing.Application**: Business logic
|
|
- `Backtester.cs`, `TradingBotBase.cs`
|
|
- Used by both API and Compute
|
|
|
|
- **Managing.Domain**: Domain models
|
|
- `BundleBacktestRequest.cs`, `BacktestJob.cs`
|
|
- Shared entities
|
|
|
|
- **Managing.Infrastructure**: External integrations
|
|
- Database repositories, InfluxDB client
|
|
- Shared data access
|
|
|
|
- **Managing.Common**: Utilities
|
|
- Constants, enums, helpers
|
|
- Shared across all projects
|
|
|
|
## Benefits
|
|
|
|
1. **Code Reuse**: Shared business logic between API and Compute
|
|
2. **Consistency**: Same domain models and logic
|
|
3. **Maintainability**: Single source of truth
|
|
4. **Type Safety**: Shared types prevent serialization issues
|
|
5. **Testing**: Shared test projects
|
|
|