71 lines
4.0 KiB
Markdown
71 lines
4.0 KiB
Markdown
# WealthLedger frontend
|
||
|
||
React/Vite-клиент WealthLedger. Клиент получает данные только через typed API
|
||
backend; прямые вызовы T-Bank из frontend не допускаются.
|
||
|
||
## Быстрый старт
|
||
|
||
Требуется Node 24 (`.nvmrc`). Создайте `.env` из примера и установите
|
||
зависимости строго из lockfile:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
nvm use --silent
|
||
npm ci
|
||
npm run dev
|
||
```
|
||
|
||
`VITE_API_BASE_URL` по умолчанию указывает на `http://localhost:3000`.
|
||
|
||
Для commits установите [Gitleaks](https://github.com/gitleaks/gitleaks/releases/tag/v8.30.1)
|
||
8.30.1 в `PATH` (macOS: `brew install gitleaks`). Pre-commit сначала проверяет
|
||
staged diff с полной редакцией секретов, затем запускает formatting и FSD checks.
|
||
Находка или отсутствие Gitleaks блокирует commit.
|
||
Проверка этого поведения: `node --test scripts/test-pre-commit.mjs`.
|
||
|
||
## Проверка
|
||
|
||
```bash
|
||
nvm use --silent
|
||
npm run verify
|
||
```
|
||
|
||
Команда проверяет, что generated OpenAPI types соответствуют committed snapshot,
|
||
затем запускает strict TypeScript, Biome, один coverage-backed запуск Vitest,
|
||
Knip, dependency rules приложения и stories, сборки приложения и Storybook.
|
||
Отдельный CI workflow `Frontend security` на push, pull request и ежедневно
|
||
проверяет полную доступную историю Gitleaks 8.30.1 и выполняет
|
||
`npm audit --include=dev --audit-level=low`. Любой advisory блокирует security job;
|
||
исключений frontend нет. Локально можно выполнить те же команды:
|
||
`gitleaks git --log-opts=--all --redact=100 --no-banner` и
|
||
`npm audit --include=dev --audit-level=low`. Audit требует доступа к npm registry;
|
||
проверка секретов выполняется локально и не выводит их значения.
|
||
|
||
TypeScript остаётся на 5.9.3: `openapi-typescript@7.13.0` требует peer `^5.x`.
|
||
Обновление до TypeScript 7 из Renovate dashboard откладывается до совместимого
|
||
релиза генератора; `--force`/`--legacy-peer-deps` для обхода этого ограничения
|
||
не используются.
|
||
Если backend-контракт изменился,
|
||
обновите `src/shared/api/spec/openapi.json` копированием backend OpenAPI
|
||
document и затем выполните `npm run openapi:generate`.
|
||
|
||
## Документация
|
||
|
||
- [Router conventions](.ai/CONVENTIONS.md) и [источники](.ai/SOURCES.md)
|
||
- [Выбор owner/FSD](.ai/conventions/frontend-architecture.md)
|
||
- [UI, state, формы и компоненты](.ai/conventions/frontend-ui.md)
|
||
- [Data/API/cache](.ai/conventions/frontend-data.md)
|
||
- [Testing](.ai/conventions/frontend-testing.md)
|
||
- [Поставленный UI-каталог Storybook](../docs/development/ui-catalog.md)
|
||
- [Обзор поставленной системы](../docs/overview.md)
|
||
- [Engineering governance и risk-based testing](../docs/development/engineering-governance.md)
|
||
- [Карта проектных фактов](../docs/README.md)
|
||
- [Границы проверки интерфейса](../docs/development/verification.md#интерфейс)
|
||
- [Remediation registry](../docs/development/audit-remediation.md)
|
||
|
||
Runtime OpenAPI backend сверяется с frontend snapshot отдельной read-only
|
||
backend командой `npm run test:openapi-contract`.
|
||
Разработка идёт напрямую по задаче пользователя. Каждый affected repo проходит
|
||
свой verify; при изменении wire contract дополнительно выполняется contract check.
|
||
Обязательного OpenSpec/SDD lifecycle нет.
|