# Technology Stack ## Backend - **Language**: TypeScript (Node.js) - **Framework**: Fastify - **Scraping**: Playwright (headless Chromium) - **Database**: PostgreSQL + TimescaleDB extension - **ORM**: Prisma or Drizzle - **Job Scheduling**: Node Scheduler or BullMQ - **WebSockets**: Native `ws` or Fastify WS plugin - **Deployment**: Docker containers ## Frontend (Electron Desktop App) - **Framework**: Electron 30+ - **UI Library**: NextJS? + TypeScript/TSX - **Build Tool**: Vite - **Styling**: TailwindCSS - **Charts**: Recharts, ECharts, or TradingView Charting Library - **State Management**: Zustand or Recoil - **Auto-updates**: electron-updater ## Testing - **Unit Tests**: Jest - **E2E Tests**: Playwright - **API Integration**: Supertest or Pact ## Common Commands ```bash # Backend npm run dev # Start development server npm run build # Build TypeScript npm run test # Run Jest tests npm run scrape # Manual scrape trigger # Frontend (Electron) npm run dev # Start Electron in dev mode npm run build # Build production app npm run package # Package for distribution npm run test # Run tests # Database npm run migrate # Run database migrations npm run seed # Seed initial data ``` ## Performance Requirements - API latency < 50ms for standard queries - Support 5000+ concurrent WebSocket connections - Desktop app must handle 50k+ chart datapoints smoothly - Scraping frequency: every 5 minutes (configurable)