- Split single p-queue (5 req/s) into 3 isolated queues: operations (5/s), instruments (20/s), users (5/s) - Removed dead instruments param from mapBrokerPortfolio - portfolio/positions endpoints share raw GetPortfolio cache - Docs: T_BANK_INSTRUMENTS_RATE_LIMIT, CACHE_TBANK_POSITIONS_TTL, rate limiting section in tbank-invest.md
MoexVibe
Веб-приложение для анализа ценных бумаг Московской биржи (MOEX).
Tech Stack
- Backend: NestJS, TypeScript, OpenAPI (Swagger)
- Frontend: React, TypeScript, Vite, TanStack Query, lightweight-charts
- Docs: Docusaurus
- Infrastructure: Docker, docker-compose
Quick Start
# Install dependencies
npm install
# Start backend (http://localhost:3000)
npm run dev:backend
# Start frontend (http://localhost:5173)
npm run dev:frontend
Swagger UI: http://localhost:3000/api/docs
Docker
docker compose up --build
- Frontend: http://localhost:80
- Backend: http://localhost:3000
Tests
npm run test:backend
npm run test:frontend
Live MOEX integration checks are opt-in:
npm run test:integration -w apps/backend
Project Structure
apps/
backend/ — NestJS API (single point of access to MOEX ISS)
frontend/ — React SPA with Vite
docs/ — Docusaurus documentation site
docs/
superpowers/specs/ — accepted SDD specifications
Description
Languages
TypeScript
97.7%
Shell
1.2%
JavaScript
0.9%
CSS
0.2%