Some checks failed
- Add Portfolio + Position models (Prisma + migrations) - Backend: PortfolioModule with CRUD, enrichment, type detection - Backend: enrichBondPosition returns 13 financial fields (YTM, duration, coupon, NCD, accrued interest, bid/offer, bondType, offerDate, etc.) - Frontend: portfolio pages, 4 TanStack Query hooks, split share/bond tables - Fix: MOEX bond marketdata board fallback (TQCB → TQOB for OFZ) - Frontend: clickable ticker links to /stocks/:secid and /bonds/:secid - Remove: target allocation, deviation, tags display from Phase 1 - Docs: ADR-009 (domain model), ADR-010 (price computation), portfolio backend doc, superpowers spec + plan
MoexVibe
Веб-приложение для анализа ценных бумаг Московской биржи (MOEX).
Tech Stack
- Backend: NestJS, TypeScript, OpenAPI (Swagger)
- Frontend: React, TypeScript, Vite, TanStack Query, lightweight-charts
- 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
Project Structure
apps/
backend/ — NestJS API (single point of access to MOEX ISS)
frontend/ — React SPA with Vite
docs/
architecture/ — ADR documents and diagrams
openapi/ — OpenAPI specification
superpowers/ — Design specs and implementation plans
Description
Languages
TypeScript
97.7%
Shell
1.2%
JavaScript
0.9%
CSS
0.2%