Skip to content

Latest commit

Β 

History

History
117 lines (86 loc) Β· 3.71 KB

File metadata and controls

117 lines (86 loc) Β· 3.71 KB

TSETMC Market Data Service

πŸš€ Quick Start

Single Command Deployment:

# Windows
start.bat

# Linux/Mac  
./start.sh

# Manual
docker compose up -d

Access the application:

✨ Features

  • Unified Deployment: Single Dockerfile deployment
  • Real-time WebSocket: Live stock data updates (5-second intervals)
  • REST API: Complete market data with 2-minute caching
  • Market Hours Awareness: Automatic polling during market hours (9:00 AM - 12:30 PM Tehran time)
  • Redis Caching: fast API responses
  • PostgreSQL Persistence: Historical data storage

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      β”‚    β”‚   Backend        β”‚    β”‚   Database      β”‚
β”‚   (React)       │◄──►│   (FastAPI)      │◄──►│   (PostgreSQL)  β”‚
β”‚   Port 80       β”‚    β”‚   Port 8000      β”‚    β”‚   Port 5432     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚                       β”‚                       β”‚
         β–Ό                       β–Ό                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Nginx         β”‚    β”‚   Redis         β”‚    β”‚   WebSocket     β”‚
β”‚   (Reverse      β”‚    β”‚   (Cache)       β”‚    β”‚   (Real-time)   β”‚
β”‚    Proxy)       β”‚    β”‚   Port 6379     β”‚    β”‚   Updates)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“Š API Endpoints

REST API

  • GET /api/health - Service health check
  • GET /api/market/status - Current market status
  • GET /api/market/all - Complete market data
  • GET /api/websocket/stats - WebSocket connection statistics

WebSocket

  • ws://localhost/market/{ins_code}/realtime - Real-time stock data

πŸ”§ Commands

# Start services
docker compose up -d

# View logs
docker compose logs -f tsetmc-app

# Stop services
docker compose down

# Restart services
docker compose restart

# Check Redis cache
docker compose exec redis redis-cli

# Access database
docker compose exec postgres psql -U tsetmc_user -d tsetmc_market

πŸ“ˆ Market Hours

The Iranian stock market operates:

  • Days: Sunday to Thursday (Friday and Saturday are weekends)
  • Hours: 9:00 AM to 12:30 PM Tehran time
  • Timezone: Asia/Tehran

πŸ—„οΈ Data Persistence

  • PostgreSQL: postgres_data volume
  • Redis: redis_data volume
  • Logs: ./logs/ directory

🌐 Environment Variables

  • DATABASE_URL: PostgreSQL connection string
  • REDIS_URL: Redis connection string
  • LOG_LEVEL: Logging level (INFO, DEBUG, ERROR)

πŸ“ WebSocket Testing

Test real-time stock data in browser console:

const ws = new WebSocket('ws://localhost/market/778253364357513/realtime');
ws.onmessage = (event) => console.log(JSON.parse(event.data));

πŸ” Monitoring