103 lines
2.7 KiB
Markdown
103 lines
2.7 KiB
Markdown
# @stock-bot/config
|
|
|
|
A configuration management library for the Stock Bot trading platform.
|
|
|
|
## Overview
|
|
|
|
This library provides a centralized way to manage configurations across all Stock Bot microservices and components. It includes:
|
|
|
|
- Environment-based configuration loading
|
|
- Strong TypeScript typing and validation using Zod
|
|
- Default configurations for services
|
|
- Environment variable parsing helpers
|
|
- Service-specific configuration modules
|
|
|
|
## Usage
|
|
|
|
### Basic Usage
|
|
|
|
```typescript
|
|
import { databaseConfig, dataProviderConfigs, riskConfig } from '@stock-bot/config';
|
|
|
|
// Access database configuration
|
|
const dragonflyHost = databaseConfig.dragonfly.host;
|
|
|
|
// Access data provider configuration
|
|
const alpacaApiKey = dataProviderConfigs.providers.find(p => p.name === 'alpaca')?.apiKey;
|
|
|
|
// Access risk configuration
|
|
const maxPositionSize = riskConfig.maxPositionSize;
|
|
```
|
|
|
|
### Service-Specific Configuration
|
|
|
|
```typescript
|
|
import { marketDataGatewayConfig, riskGuardianConfig } from '@stock-bot/config';
|
|
|
|
// Access Market Data Gateway configuration
|
|
const websocketPath = marketDataGatewayConfig.websocket.path;
|
|
|
|
// Access Risk Guardian configuration
|
|
const preTradeValidation = riskGuardianConfig.riskChecks.preTradeValidation;
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
The library automatically loads environment variables from `.env` files. You can create environment-specific files:
|
|
|
|
- `.env` - Base environment variables
|
|
- `.env.development` - Development-specific variables
|
|
- `.env.production` - Production-specific variables
|
|
- `.env.local` - Local overrides (not to be committed to git)
|
|
|
|
## Configuration Modules
|
|
|
|
### Core Configuration
|
|
|
|
- `Environment` - Enum for different environments
|
|
- `loadEnvVariables()` - Load environment variables from .env files
|
|
- `getEnvironment()` - Get the current environment
|
|
- `validateConfig()` - Validate configuration with Zod schema
|
|
|
|
### Database Configuration
|
|
|
|
- `databaseConfig` - Database connection settings (Dragonfly, QuestDB, MongoDB, PostgreSQL)
|
|
|
|
### Data Provider Configuration
|
|
|
|
- `dataProviderConfigs` - Settings for market data providers
|
|
|
|
### Risk Configuration
|
|
|
|
- `riskConfig` - Risk management parameters (max drawdown, position size, etc.)
|
|
|
|
### Service-Specific Configuration
|
|
|
|
- `marketDataGatewayConfig` - Configs for the Market Data Gateway service
|
|
- `riskGuardianConfig` - Configs for the Risk Guardian service
|
|
|
|
## Extending
|
|
|
|
To add a new service configuration:
|
|
|
|
1. Create a new file in `src/services/`
|
|
2. Define a Zod schema for validation
|
|
3. Create loading and default configuration functions
|
|
4. Export from `src/services/index.ts`
|
|
5. The new configuration will be automatically available from the main package
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# Install dependencies
|
|
bun install
|
|
|
|
# Run tests
|
|
bun test
|
|
|
|
# Type check
|
|
bun run type-check
|
|
|
|
# Lint
|
|
bun run lint
|
|
```
|