# Stock Trading Bot Application

A comprehensive stock trading bot application with multiple microservices for data ingestion, processing, and API access.

## Architecture

The stock bot consists of the following services:

- **Config**: Centralized configuration management
- **Data Ingestion**: Handles real-time and historical data collection
- **Data Pipeline**: Processes and transforms market data
- **Web API**: RESTful API for accessing stock data
- **Web App**: Frontend user interface

## Quick Start

### Prerequisites

- Node.js >= 18.0.0
- Bun >= 1.1.0
- Turbo
- PostgreSQL, MongoDB, QuestDB, and Redis/Dragonfly running locally

### Installation

```bash
# Install all dependencies
bun install

# Build the configuration package first
bun run build:config
```

### Development

```bash
# Run all services in development mode (using Turbo)
bun run dev

# Run only backend services
bun run dev:backend

# Run only frontend
bun run dev:frontend

# Run specific service
bun run dev:ingestion
bun run dev:pipeline
bun run dev:api
bun run dev:web
```

### Production

```bash
# Build all services (using Turbo)
bun run build

# Start with PM2
bun run pm2:start

# Check status
bun run pm2:status

# View logs
bun run pm2:logs
```

### Configuration

Configuration is managed centrally in the `config` package. 

- Default config: `config/config/default.json`
- Environment-specific: `config/config/[environment].json`
- Environment variables: Can override any config value

### Health Checks

```bash
# Check all services health
bun run health:check
```

### Database Management

```bash
# Run migrations
bun run db:migrate

# Seed database
bun run db:seed
```

## Available Scripts

| Script | Description |
|--------|-------------|
| `dev` | Run all services in development mode |
| `build` | Build all services |
| `start` | Start all backend services |
| `test` | Run tests for all services |
| `lint` | Lint all services |
| `clean` | Clean build artifacts and dependencies |
| `docker:build` | Build Docker images |
| `pm2:start` | Start services with PM2 |
| `health:check` | Check health of all services |

## Service Ports

- Data Ingestion: 2001
- Data Pipeline: 2002
- Web API: 2003
- Web App: 3000 (or next available)

## Environment Variables

Key environment variables:

- `NODE_ENV`: development, test, or production
- `PORT`: Override default service port
- Database connection strings
- API keys for data providers

See `config/config/default.json` for full configuration options.