2.7 KiB
2.7 KiB
@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
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
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 environmentsloadEnvVariables()- Load environment variables from .env filesgetEnvironment()- Get the current environmentvalidateConfig()- Validate configuration with Zod schema
Database Configuration
databaseConfig- Database connection settings (Dragonfly, TimescaleDB)
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 serviceriskGuardianConfig- Configs for the Risk Guardian service
Extending
To add a new service configuration:
- Create a new file in
src/services/ - Define a Zod schema for validation
- Create loading and default configuration functions
- Export from
src/services/index.ts - The new configuration will be automatically available from the main package
Development
# Install dependencies
bun install
# Run tests
bun test
# Type check
bun run type-check
# Lint
bun run lint