Памятка для frontend-команды
Обновлён 14 апр. 2026 г., 17:16 · 0 комментариев
Памятка для frontend-команды
Паспорт документа
- Статус документа: working reference
- Актуально на: 1 апреля 2026 года
- Владелец: backend/platform-команда, совместно с frontend-командой
- Пересмотр: при изменении backend/frontend handoff-процесса, ownership-модели или API change workflow
- Область применения: операционная модель взаимодействия backend/platform-команды и отдельной frontend-команды
- Связанные документы:
- Карта API-маршрутов
- Текущее состояние
- Инженерные принципы
- Модель stage delivery и release handoff
Цель документа
Этот документ фиксирует рабочую модель для отдельной frontend-команды, которая ведёт qadam-web независимо от backend-команды. Здесь зафиксированы репозитории, точки входа, контрактный процесс, правила handoff и минимальный release-gate.
1. Модель владения
qadam-webведёт отдельная frontend-команда.qadam-coreведёт backend/platform-команда.- Источник истины по UI, frontend runtime и web delivery:
qadam-web. - Источник истины по API, Prisma, auth-модели, OpenAPI и канонической проектной документации:
qadam-core. - Production уже развернут из
qadam-coreиqadam-web. - Внутри
qadam-webтеперь есть два приложения:apps/webиapps/roadmap. По умолчанию зона ответственности frontend-команды —apps/web;apps/roadmapсчитается внутренним сервисом документации и меняется только отдельным change package. - Старый checkout
/data/uzbekостаётся только как legacy-копия и не должен использоваться для новой разработки.
2. Канонические репозитории
- Frontend:
https://git.2fab.app/eldar/qadam-web.git - Backend и API-контракт:
https://git.2fab.app/eldar/qadam-core.git
3. Каноническая документация и точки входа
- Общий индекс документации: docs/README.md
- Roadmap проекта: docs/project/roadmap.md
- Execution checkpoints проекта: docs/project/execution-checkpoints.md
- Project change log: docs/project/project-change-log.md
- Текущее состояние платформы и production: docs/project/current-state.md
- Инженерные правила проекта: docs/governance/engineering-principles.md
- Человекочитаемая карта API: docs/architecture/api-routes.md
- Общие API conventions: docs/architecture/api-conventions.md
- Backend change-log для frontend-команды: docs/frontend/frontend-change-log.md
- Frontend remediation backlog: docs/frontend/frontend-adoption-backlog.md
- Документ о разделении репозиториев: docs/frontend/frontend-separate-repo-plan.md
- Локальная копия этой памятки во frontend-репозитории:
qadam-web/docs/frontend-handoff.mdЭто намеренно более короткая локальная версия, чтобы не плодить два равноправных источника истины.
4. Swagger, OpenAPI и контрактные артефакты
Runtime
- Swagger UI:
https://qadam.2fab.app/api/docs - OpenAPI JSON:
https://qadam.2fab.app/api/openapi.json
Версионируемые артефакты
В qadam-core:
apps/api/openapi/openapi.json
В qadam-web:
openapi/openapi.jsonapps/web/src/shared/api/generated/openapi.d.tsapps/roadmap/— отдельный внутренний сервис документации для доменаqadam-roadmap.2fab.app
5. Быстрый старт для frontend-команды
git clone https://git.2fab.app/eldar/qadam-web.git
cd qadam-web
pnpm install
cp .env.example .env
pnpm generate:api-contract
pnpm dev
Если нужен локальный backend:
git clone https://git.2fab.app/eldar/qadam-core.git
cd qadam-core
pnpm install
cp .env.example .env
pnpm build
pnpm dev
6. Минимальная локальная связка для cookie-based auth
В qadam-web/.env:
NEXT_PUBLIC_API_URL=http://localhost:5001/api/v1API_URL=http://localhost:5001/api/v1
В qadam-core/.env:
PORT=5001CORS_ORIGIN=http://localhost:3000
Ожидаемая локальная схема:
- frontend:
http://localhost:3000 - backend:
http://localhost:5001
Такой режим сохраняет текущую браузерную cookie-based auth модель без самодельного frontend auth-обхода.
7. Ключевые переменные окружения frontend
Смотри qadam-web/.env.example.
Ключевые переменные:
NEXT_PUBLIC_API_URL— публичный URL API для браузераAPI_URL— server-side URL API для Next.js server components и middlewareOPENAPI_SCHEMA_URL— необязательный внешний источник схемы для codegenQADAM_PROJECT_ROOT— project root для roadmap/docs порталаQADAM_ROADMAP_STORAGE_DIR— storage для загруженных roadmap-документов и комментариев
8. Канонический контрактный процесс
- Изменение API начинается в
qadam-core. - В
qadam-coreобновляется код, OpenAPI schema иapps/api/openapi/openapi.json. - Обновлённый artifact переносится в
qadam-web/openapi/openapi.json. - Во frontend запускается
pnpm generate:api-contract. - Только после этого меняются queries, mutations, server actions, UI и SSR-слой.
Frontend не должен придумывать собственные transport-типы поверх устаревшего контракта, если endpoint уже может быть описан в OpenAPI.
9. Распределение ответственности между командами
- Изменение API, DTO, auth-модели и OpenAPI artifact в
qadam-core— ответственность backend/platform change package. - Синхронизация
openapi/openapi.jsonвqadam-webи прогон codegen — обязательная часть того же change package до передачи работы frontend-команде. - Если frontend обнаружил contract drift, он не чинит типы вручную, а поднимает запрос на обновление backend artifact.
- Изменения UI и пользовательских сценариев в
qadam-webне должны скрыто менять backend-контракт или auth-модель.
10. Release handoff между backend и frontend
Каждый backend change package, который меняет API или поведение web-flow, должен передаваться frontend-команде вместе с четырьмя обязательными артефактами:
- ссылка на commit или branch в
qadam-core; - обновлённый
apps/api/openapi/openapi.json; - запись в docs/frontend/frontend-change-log.md по endpoint-уровню: что добавлено, что изменено, что несовместимо;
- явное указание, нужны ли новые env, migration, feature flag или UI-изменения.
Если пакет реально требует действий от frontend, он должен появиться в блоке Что сейчас должна сделать frontend-команда на https://qadam-roadmap.2fab.app, а frontend-команда после получения пакета должна отметить там один из статусов:
В работеСделаноИгнорировать
Если запись changelog носит только информационный характер и не требует действий, backend-команда обязана явно указать в записи Требуется действие frontend: нет, чтобы на портале не показывались кнопки подтверждения.
Отдельно от backend handoff существует frontend-adoption-backlog.md: это remediation backlog по самому qadam-web, где фиксируются уже не backend deliverables, а текущие красные зоны frontend-кода и quality gate.
Каждый frontend release package, который зависит от нового backend-контракта, должен содержать:
- ссылку на commit в
qadam-web; - подтверждение, что
pnpm generate:api-contractиpnpm check:api-contractпройдены; - список маршрутов или сценариев, которые нужно smoke-проверить после релиза;
- указание, есть ли блокирующие backend gaps или временные product limitations.
- обновление статуса соответствующего backend-пакета на
qadam-roadmap.2fab.app, если он был опубликован какready_for_frontend.
10.1. Как реально происходит stage-релиз
Текущая каноническая модель такая:
- backend-команда и frontend-команда работают в своих репозиториях независимо;
- согласованный релизный момент наступает после merge в
main; - отдельный stage-сервер автоматически забирает
mainи разворачивает актуальную версию для UI-проверки; - текущая машина не должна использоваться как обязательный ручной deploy-контур для frontend-проверок.
Практический вывод для frontend-команды:
- работать в своей ветке;
- закрывать package и PR;
- подтверждать readiness относительно backend handoff;
- после merge в
mainждать stage auto deploy и уже там смотреть итоговую интеграцию.
11. Auth-контур, который нельзя менять молча
Для web-клиента каноническая модель авторизации сейчас такая:
- access cookie:
qadam_at - refresh cookie:
qadam_rt - основной браузерный сценарий: same-domain cookie auth
- bearer auth поддерживается backend как дополнительный режим для non-web клиентов, но не заменяет браузерный сценарий
Нельзя:
- переводить web на bearer-only модель без отдельного backend и infra решения;
- менять cookie naming, path, same-site policy или refresh-flow без синхронного backend/infrastructure change package;
- обходить
src/shared/apiи generated contract без явной и документированной причины; - строить новый auth-layer только внутри
qadam-web, если он расходится сqadam-core.
12. Минимальный acceptance gate
Для qadam-web:
pnpm generate:api-contractpnpm check:api-contractpnpm check-typespnpm build
Для qadam-core, если change package меняет контракт:
pnpm export:openapipnpm check-typespnpm testpnpm build
13. Что нельзя делать
- Нельзя импортировать backend-исходники в
qadam-web. - Нельзя держать параллельные несинхронизированные OpenAPI artifacts.
- Нельзя использовать legacy workspace
/data/uzbekкак рабочую площадку новой frontend-разработки. - Нельзя изменять API-модель на уровне UI-адаптеров без фиксации этого изменения в OpenAPI и документации.
- Нельзя передавать задачу между командами только устно, без commit/reference и без обновлённого контракта.