2.1 KiB
2.1 KiB
Обзор frontend
React SPA, собранная с Vite.
Технологический стек
- React 18
- react-router-dom v6
- TanStack Query v5
- lightweight-charts v4
- openapi-fetch (с рукописными типами
responses.ts) - Vitest + Testing Library + MSW
- Vite 5
Структура исходников
apps/frontend/src/
├── main.tsx # Точка входа
├── App.tsx # BrowserRouter
├── routes.tsx # Маршруты
├── api/
│ ├── auth.ts # Auth API helpers
│ ├── client.ts # HTTP-клиент (fetch)
│ ├── portfolio.ts # Portfolio API helpers
│ ├── responses.ts # Типы ответов (ручные)
│ ├── screener.ts # Screener API helpers
│ └── types.ts # Типы из openapi-typescript
├── context/
│ └── AuthContext.tsx
├── hooks/
│ ├── useAuth.ts
│ ├── usePortfolio.ts
│ ├── usePortfolioAnalytics.ts
│ ├── usePortfolioMutations.ts
│ ├── usePortfolios.ts
│ ├── usePositionMutations.ts
│ ├── useScreener.ts
│ ├── useSearch.ts
│ ├── useStock.ts
│ ├── useStockCandles.ts
│ ├── useStockDividends.ts
│ ├── useBond.ts
│ └── useBondCandles.ts
├── components/
│ ├── Layout.tsx
│ ├── ProtectedRoute.tsx
│ ├── SearchBar.tsx
│ ├── PriceChart.tsx
│ ├── StockDetails.tsx
│ ├── BondDetails.tsx
│ └── portfolios/
├── pages/
│ ├── HomePage.tsx
│ ├── StockPage.tsx
│ ├── BondPage.tsx
│ ├── LoginPage.tsx
│ ├── RegisterPage.tsx
│ ├── ProfilePage.tsx
│ ├── portfolios/
│ └── screener/
├── test/
│ ├── handlers.ts # MSW handlers
│ └── test-utils.tsx
└── styles.css
Точка входа
main.tsx рендерит App.tsx, который содержит BrowserRouter → AppRoutes.