Sergey Krylov 49ee364856
All checks were successful
CI / lint (pull_request) Successful in 2m9s
CI / test (pull_request) Successful in 1m56s
CI / build (pull_request) Successful in 2m6s
CI / lint (push) Successful in 1m56s
CI / test (push) Successful in 1m55s
CI / build (push) Successful in 2m19s
feat(broker): per-type positions pagination with independent tables
- Add type query param to GET /accounts/:accountId/positions endpoint
- Backend filters T-Bank portfolio positions by instrument type before pagination
- Each instrument type (share, bond, etf, fund) has its own frontend table with
  independent cursor-based pagination and skeleton loading
- Groups with no positions are automatically hidden
- Cache key includes type for correct per-type caching
- Remove centralized positions pagination state from BrokerAccountDetailPage
- 94 backend tests / 112 frontend tests pass
2026-06-18 06:02:54 +03:00
2026-06-15 21:04:24 +03:00

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

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
No description provided
Readme 9.1 MiB
Languages
TypeScript 97.7%
Shell 1.2%
JavaScript 0.9%
CSS 0.2%