Clean repo
This commit is contained in:
165
CLAUDE.md
Normal file
165
CLAUDE.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Common Development Commands
|
||||
|
||||
### Backend (.NET)
|
||||
```bash
|
||||
# Build entire solution
|
||||
dotnet build src/Managing.sln
|
||||
|
||||
# Run main API (port 80/443)
|
||||
dotnet run --project src/Managing.Api/Managing.Api.csproj
|
||||
|
||||
# Run worker API (port 81/444)
|
||||
dotnet run --project src/Managing.Api.Workers/Managing.Api.Workers.csproj
|
||||
|
||||
# Run tests
|
||||
dotnet test src/Managing.Application.Tests/
|
||||
dotnet test src/Managing.Infrastructure.Tests/
|
||||
|
||||
# Run specific test
|
||||
dotnet test --filter "TestMethodName"
|
||||
|
||||
# Database migrations
|
||||
dotnet ef database update --project src/Managing.Infrastructure.Database/Managing.Infrastructure.Databases.csproj --context ManagingDbContext
|
||||
dotnet ef migrations add <MigrationName> --project src/Managing.Infrastructure.Database/Managing.Infrastructure.Databases.csproj --context ManagingDbContext
|
||||
|
||||
# Regenerate API client (after API changes)
|
||||
cd src/Managing.Nswag && dotnet build
|
||||
```
|
||||
|
||||
### Frontend (React/TypeScript)
|
||||
```bash
|
||||
cd src/Managing.WebApp
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Development server
|
||||
npm run dev
|
||||
|
||||
# Build for production
|
||||
npm run build
|
||||
|
||||
# Linting and type checking
|
||||
npm run lint
|
||||
npm run typecheck
|
||||
|
||||
# Tests
|
||||
npm run test
|
||||
```
|
||||
|
||||
### Full Stack Development
|
||||
```bash
|
||||
# Quick start with Docker
|
||||
./scripts/build_and_run.sh
|
||||
|
||||
# Alternative using Aspire
|
||||
cd src && ./run-aspire.sh
|
||||
```
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
### Clean Architecture Pattern
|
||||
The codebase follows Clean Architecture with clear layer separation:
|
||||
- **Domain** (`Managing.Domain`): Business entities and core rules
|
||||
- **Application** (`Managing.Application*`): Use cases, commands, and business orchestration
|
||||
- **Infrastructure** (`Managing.Infrastructure.*`): External integrations (databases, Web3, messaging)
|
||||
- **Presentation** (`Managing.Api*`): REST APIs and controllers
|
||||
|
||||
### Service Architecture
|
||||
Multiple coordinated services handle different concerns:
|
||||
- **Managing.Api**: Main trading operations, bot management, backtesting
|
||||
- **Managing.Api.Workers**: Background workers for price data, genetic algorithms, statistics
|
||||
- **Managing.Web3Proxy**: Node.js service for Web3/GMX blockchain interactions
|
||||
- **Managing.WebApp**: React frontend with real-time SignalR updates
|
||||
|
||||
### Data Storage Strategy (Polyglot Persistence)
|
||||
- **PostgreSQL**: Transactional data (users, bots, positions, scenarios, backtests)
|
||||
- **InfluxDB**: Time-series data (OHLCV candles, agent balances, performance metrics)
|
||||
- **MongoDB**: Document storage for certain data types
|
||||
|
||||
### Key Domain Concepts
|
||||
- **Bot**: Abstract base with lifecycle management for trading automation
|
||||
- **Position**: Trading positions with PnL tracking and trade history
|
||||
- **Scenario**: Collections of technical indicators defining trading strategies
|
||||
- **Indicator**: Technical analysis tools (RSI, MACD, EMA, SuperTrend, etc.)
|
||||
- **MoneyManagement**: Risk parameters (stop loss, take profit, position sizing)
|
||||
- **Account**: Multi-exchange trading accounts (CEX, GMX V2, Privy wallets)
|
||||
|
||||
## Development Patterns
|
||||
|
||||
### Adding New Features
|
||||
1. **Domain First**: Create entities in `Managing.Domain`
|
||||
2. **Application Layer**: Add services/command handlers in `Managing.Application`
|
||||
3. **Infrastructure**: Implement repositories and external integrations
|
||||
4. **API Layer**: Add controllers and endpoints
|
||||
5. **Frontend**: Update React components and API client
|
||||
|
||||
### Bot Development
|
||||
- Inherit from `Bot` base class in `Managing.Domain/Bots/`
|
||||
- Implement `SaveBackup()` and `LoadBackup()` for persistence
|
||||
- Use dependency injection pattern for services
|
||||
- Follow worker pattern for background execution
|
||||
|
||||
### Adding Technical Indicators
|
||||
1. Create indicator class implementing `IIndicator`
|
||||
2. Add to `IndicatorType` enum in `Managing.Common`
|
||||
3. Register in DI container via `ApiBootstrap`
|
||||
4. Implement calculation logic in `TradingService`
|
||||
|
||||
### Database Changes
|
||||
1. Update entities in domain layer
|
||||
2. Modify `ManagingDbContext` with new DbSets
|
||||
3. Generate EF Core migration
|
||||
4. Update repository interfaces and implementations
|
||||
5. Consider InfluxDB for time-series data
|
||||
|
||||
### Web3 Integration
|
||||
- GMX V2 interactions go through `Managing.Web3Proxy` Node.js service
|
||||
- Use `Managing.Infrastructure.Web3` for .NET integration
|
||||
- Privy handles wallet management and authentication
|
||||
|
||||
## Configuration & Environment
|
||||
|
||||
### Key Configuration Files
|
||||
- `src/Managing.Api/appsettings.*.json`: Main API configuration
|
||||
- `src/Managing.Api.Workers/appsettings.*.json`: Worker configuration
|
||||
- `src/Managing.WebApp/.env`: Frontend environment variables
|
||||
|
||||
### Environment-Specific Deployments
|
||||
- Development: `appsettings.Development.json`
|
||||
- Sandbox: `appsettings.Sandbox.json`
|
||||
- Production: `appsettings.Production.json`
|
||||
- Docker: `appsettings.Oda-docker.json`
|
||||
|
||||
## Important Development Guidelines
|
||||
|
||||
### Quantitative Finance Principles
|
||||
- Use `decimal` for all monetary calculations (never `float` or `double`)
|
||||
- Implement proper audit trails for financial operations
|
||||
- Validate trading strategies with historical backtesting
|
||||
- Optimize time-series processing for performance
|
||||
|
||||
### Code Architecture Rules
|
||||
- Follow Controller → Application → Repository pattern (never inject repositories directly into controllers)
|
||||
- Use CQRS pattern with command handlers for complex operations
|
||||
- Implement proper error handling with user-friendly messages
|
||||
- Maintain separation between domain logic and infrastructure concerns
|
||||
|
||||
### API Development
|
||||
- Follow RESTful conventions
|
||||
- Use attribute routing in controllers
|
||||
- Return appropriate HTTP status codes
|
||||
- Implement proper validation using Data Annotations
|
||||
|
||||
### Testing Strategy
|
||||
- Unit tests focus on domain logic and indicators
|
||||
- Integration tests for external service interactions
|
||||
- Use data-driven testing with JSON fixtures for backtesting scenarios
|
||||
|
||||
## Real-time Features
|
||||
- SignalR hubs provide live updates for trading data, bot status, and market information
|
||||
- Frontend uses reactive patterns with real-time price feeds and position updates
|
||||
Reference in New Issue
Block a user