Sergey Krylov 74ca576310 feat(design-system): add typography and actions
Implement Text, Heading, Link, Button, and IconButton components with TDD and Storybook stories. Each component wraps MUI with restricted props for visual consistency.
2026-06-21 09:32:58 +03:00
2026-06-18 23:10:25 +03:00

MoexVibe

Веб-приложение для анализа ценных бумаг Московской биржи (MOEX).

Содержание


О проекте

npm workspaces монорепозиторий:

Пакет Назначение
apps/backend NestJS API (единственная точка доступа к MOEX ISS)
apps/frontend React SPA на Vite
apps/docs Сайт документации Docusaurus

Стек технологий

  • Бэкенд: NestJS, TypeScript, OpenAPI (Swagger)
  • Фронтенд: React, TypeScript, Vite, TanStack Query, lightweight-charts
  • Документация: Docusaurus
  • Инфраструктура: Docker, docker-compose

Быстрый старт

# Настройка локального окружения
cp apps/backend/.env.example apps/backend/.env

# Установка зависимостей и подготовка базы данных
npm install
npm exec -w apps/backend -- prisma migrate dev

# Запуск бэкенда (http://localhost:3000)
npm run dev:backend

# Запуск фронтенда (http://localhost:5173)
npm run dev:frontend

Swagger UI: http://localhost:3000/api/docs


Docker

docker compose up --build

Тестирование

npm run test:backend
npm run test:frontend

Интеграционные тесты с MOEX — опциональны:

npm run test:integration -w apps/backend

Структура проекта

apps/
  backend/     — NestJS API, единая точка доступа к MOEX ISS
  frontend/    — React SPA на Vite
  docs/        — сайт документации Docusaurus
docs/
  features/    — спецификации и планы реализации (SDD)
  epics/       — продуктовые эпики
  inbox.md     — идеи и заметки
  roadmap.md   — запланированные эпики и фичи

Команды

Команда Что делает
npm run dev:backend Запуск NestJS в режиме watch на :3000
npm run dev:frontend Vite dev-сервер на :5173, проксирует /api → :3000
npm run dev:docs Docusaurus dev-сервер
npm run build:backend nest build
npm run build:frontend tsc -b && vite build (в две фазы)
npm run build:docs docusaurus build
npm run test:backend vitest run (SWC, не ts-jest)
npm run test:frontend Frontend Vitest suite
npm run lint ESLint для backend и frontend
npm run format Prettier для всех *.{ts,tsx}
npm run codegen -w apps/frontend openapi-typescript из запущенного локального Swagger → src/api/types.ts

Интеграционные тесты с MOEX: npm run test:integration -w apps/backend.

Один backend-тест: npm exec -w apps/backend -- vitest run src/path/to/test.spec.ts


Переменные окружения

Переменная По умолчанию Описание
PORT 3000 Порт бэкенда
MOEX_BASE_URL https://iss.moex.com/iss Адрес MOEX ISS
MOEX_RATE_LIMIT 10 Запросов/с к MOEX
MOEX_CIRCUIT_BREAKER_THRESHOLD 5 Ошибок до открытия circuit breaker
MOEX_CIRCUIT_BREAKER_RESET_SECONDS 30 Секунд до попытки закрыть circuit breaker
T_BANK_TOKEN '' Токен T-Bank Invest (серверный)
T_BANK_BASE_URL invest-public-api.tbank.ru:443 gRPC endpoint T-Bank Invest
T_BANK_CA_CERT_PATH '' Путь к PEM root CA для gRPC TLS
T_BANK_APP_NAME ksv741.moex-vibe Имя приложения для T-Bank
T_BANK_RATE_LIMIT_PER_SECOND 5 Rate limiter для OperationsService и UsersService (запросов/с)
T_BANK_INSTRUMENTS_RATE_LIMIT 20 Rate limiter для InstrumentsService (запросов/с)
T_BANK_REQUEST_TIMEOUT_MS 10000 Таймаут gRPC-запроса (мс)
CACHE_MARKET_DATA_TTL 900 TTL рыночных данных (с)
CACHE_HISTORY_TTL 3600 TTL истории (с)
CACHE_CANDLES_TTL 3600 TTL свечей (с)
CACHE_SECURITY_TTL 86400 TTL спецификации (с)
CACHE_SEARCH_TTL 3600 TTL результатов поиска (с)
CACHE_DIVIDENDS_TTL 86400 TTL дивидендных данных (с)
CACHE_TBANK_ACCOUNTS_TTL 3600 TTL брокерских счетов T-Bank (с)
CACHE_TBANK_PORTFOLIO_TTL 60 TTL брокерского портфеля T-Bank (с)
CACHE_TBANK_OPERATIONS_TTL 300 TTL брокерских операций T-Bank (с)
CACHE_TBANK_POSITIONS_TTL 60 TTL брокерских позиций T-Bank (с)
CACHE_TBANK_INSTRUMENT_TTL 86400 TTL инструментов T-Bank (с)
DATABASE_URL file:./dev.db URL SQLite для Prisma
JWT_SECRET dev-jwt-secret-... Secret для access token
JWT_REFRESH_SECRET dev-refresh-secret-... Secret для refresh token
JWT_ACCESS_EXPIRES 15m TTL access token
JWT_REFRESH_EXPIRES 7d TTL refresh token
Description
No description provided
Readme 9.1 MiB
Languages
TypeScript 97.7%
Shell 1.2%
JavaScript 0.9%
CSS 0.2%