проектdocs/frontend/frontend-separate-repo-plan.md
План работы после выделения frontend в отдельный репозиторий
Обновлён 1 апр. 2026 г., 12:41 · 0 комментариев
План работы после выделения frontend в отдельный репозиторий
Паспорт документа
- Статус документа: working reference
- Актуально на: 28 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при изменении backend/frontend handoff-процесса, ownership-модели или API change workflow
- Область применения: операционная модель взаимодействия backend/platform-команды и отдельной frontend-команды
- Связанные документы:
Цель документа
Этот документ больше не описывает гипотетический split. Разделение уже выполнено. Его задача теперь другая: зафиксировать post-cutover operating model, границы ответственности между командами и оставшийся технический план до зрелого delivery-контура.
1. Ключевой вывод
Разделение frontend уже состоялось:
qadam-webсуществует как отдельный репозиторий и автономно собирается;qadam-coreсуществует как отдельный backend/platform-репозиторий;- production уже разворачивается из
qadam-coreиqadam-web.
Следующий этап теперь не про сам split, а про доведение этой модели до управляемой работы двух команд.
2. Что уже сделано
- Созданы и запушены репозитории
qadam-coreиqadam-web. - Production переведён на split-репозитории.
- Backend публикует Swagger UI и OpenAPI JSON.
- В
qadam-coreесть канонический OpenAPI artifact:apps/api/openapi/openapi.json. - В
qadam-webесть локальный mirror artifact:openapi/openapi.json. - Frontend генерирует типы и contract layer из собственного artifact.
- Для core product-срезов frontend уже использует generated request/response types.
- Основной web runtime уже живёт в
apps/web/src/appи FSD-подобных слояхsrc/shared,src/entities,src/features,src/widgets,src/views. - Публичный каталог уже переведён на searchParams-based filters, SSR-prefetch и infinite scroll.
- Базовый web auth-layer уже работает через
proxy.ts, React Query auth queries/mutations и cookie refresh flow. - SVGR pipeline уже настроен, а иконки живут в
apps/web/src/shared/icons. - Подготовлен отдельный handoff-документ для frontend-команды.
- Roadmap-портал читает канонические документы из
qadam-core/docs.
3. Целевая operating model
После split проект должен жить в такой схеме:
Gitea
-> qadam-core
-> qadam-web
qadam-core
-> backend code
-> Prisma schema and migrations
-> OpenAPI source of truth
-> canonical docs/specs
qadam-web
-> frontend code
-> mirrored OpenAPI artifact
-> generated TS contract
-> own web delivery contour
Production
-> /api/* -> qadam-core
-> /* -> qadam-web
Эта модель сохраняет единый публичный домен и текущую cookie-based auth схему.
4. Модель владения между командами
- Backend/platform-команда владеет
qadam-core. - Frontend-команда владеет
qadam-web. - Изменения API, Prisma, auth-модели, cookie policy и OpenAPI — зона ответственности
qadam-core. - Изменения UI, SSR, client routing, web UX и web runtime — зона ответственности
qadam-web. - Каноническая документация проекта живёт в
qadam-core/docs. - Локальные frontend-инструкции допускаются в
qadam-web/docs, но не должны противоречитьqadam-core/docs.
5. Граница взаимодействия между репозиториями
Источник истины по контракту
- Контракт рождается только в
qadam-core. apps/api/openapi/openapi.json— канонический committed artifact.qadam-web/openapi/openapi.json— рабочее зеркало для frontend codegen.
Что frontend больше не должен делать
- Импортировать backend-исходники.
- Зависеть от Prisma или backend workspace-пакетов как от runtime/build prerequisite.
- Вводить ручной transport layer в обход generated contract без зафиксированной причины.
Что backend должен передавать frontend-команде
- обновлённый OpenAPI artifact;
- changelog изменений контракта;
- информацию о breaking changes;
- информацию о required env, migrations, flags и runtime-ограничениях.
6. Что ещё не доведено до зрелого состояния
Контрактный слой во frontend
- Generated contract ещё не покрывает admin API и остаточный legacy API-layer полностью.
- Нужно добить перевод старых ручных response/request типов на OpenAPI-generated слой.
- Нужно убрать прямые
fetch-вызовы и несистемные transport-обходы в admin/reference и других остаточных срезах.
Структура qadam-web
- В репозитории остаются исторические дублирующиеся UI/API-слои:
components,lib,src/components,src/lib. - Нужно сократить legacy-код и убрать конкурирующие паттерны.
Auth и registration UX
- Frontend auth-скелет уже есть, но registration UI всё ещё не синхронизирован до конца с новым backend-контрактом
register/buyer,register/sellerи buyer profile flow. - Нельзя считать web auth fully completed, пока
qadam-webне перестанет опираться на legacy/auth/registerкак на рабочее допущение.
Delivery-контур
- Docker/image-based runtime ещё не стал каноническим способом доставки.
- CI/CD для split-репозиториев нужно довести до обязательного quality gate уровня.
- Нужен web smoke/e2e-контур для регрессионной защиты.
7. Следующий технический план
Этап 1. Контрактная стабилизация
- Дожать generated contract до admin API и остаточного legacy API-layer.
- Убрать ручной drift в
qadam-webтам, где уже есть OpenAPI. - Зафиксировать и поддерживать единый handoff-процесс между командами.
Этап 2. Репозиторионная чистка
- Убрать исторически дублирующиеся frontend-слои и dead code.
- Убрать остаточное operational-использование
/data/uzbek. - Свести README, docs и actual runtime-контур к одному состоянию.
Этап 3. Quality gates
- Ввести минимальный web smoke/e2e-контур.
- Довести CI для
qadam-coreдо обязательногоcheck-types + test + build + export:openapi. - Довести CI для
qadam-webдо обязательногоgenerate:api-contract + check:api-contract + check-types + build.
Этап 4. Delivery
- Подготовить image-based delivery для
qadam-coreиqadam-web. - Зафиксировать image naming, tagging и rollback-путь.
- После этого уходить от host-based deploy как от единственного production-контура.
8. Критерии зрелого post-cutover состояния
Модель split можно считать доведённой до конца, когда одновременно выполнены условия:
qadam-coreиqadam-webявляются единственными активными репозиториями новой разработки.- Frontend полностью собирается и развивается без доступа к старому общему workspace/legacy checkout.
- Frontend получает основной API-контракт только через OpenAPI artifact и codegen.
- Есть отдельный CI/CD и image-based delivery для обоих репозиториев.
- Production и release-процесс не зависят от legacy workspace
/data/uzbek.