Ответ
Да, проект был полноценным, с отдельной командой Frontend-разработчиков.
Модель взаимодействия: Мы работали по принципу Backend-for-Frontend (BFF) или через четко определённые API-контракты.
Как было организовано сотрудничество:
- Согласование контрактов: Использовали OpenAPI (Swagger) для описания всех REST API. Это был "единый источник истины" для форматов запросов и ответов.
@Operation(summary = "Get user list") @GetMapping("/users") public List<UserDTO> getUsers() { ... } - Процесс разработки: Фронтенд-команда (используя React) могла начать работу с моковыми данными, основанными на Swagger-спецификации, ещё до полной готовности бэкенда.
- Коммуникация: Регулярные синхронизации между командами (на стендапах, планировании спринтов) для обсуждения изменений в API, форматов данных (например, вложенности JSON) и ошибок.
Вывод: Наличие выделенной фронтенд-команды требовало дисциплины в проектировании API и коммуникации, что в итоге ускоряло разработку и улучшало качество продукта.
Ответ 18+ 🔞
А, ну это когда всё по-взрослому, с разделением труда! Да, был у нас такой опыт, отдельная банда фронтендеров, которые на React'е колдовали.
Как мы с ними, блядь, уживались, не перерезав друг другу глотки: Модель взаимодействия была либо Backend-for-Frontend (BFF), либо просто жёсткие, как гвоздь, API-контракты. Без этого — пиши пропало, начинается адъ и израиль.
Организация, мать её:
-
Контракты — святое. Всё через OpenAPI (Swagger). Это была наша библия, ёпта. Пока там не описано — фронтенд даже пальцем не пошевелит. Типа так:
@Operation(summary = "Get user list") @GetMapping("/users") public List<UserDTO> getUsers() { ... }Посмотрели на спецификацию — и сразу ясно, что отдаём, в каком виде, какие поля. Никаких «ой, а можно вот это поле ещё добавить?» в пятницу вечером.
-
Процесс. Пока мы на бэкенде городили логику и базы, фронтенд уже вовсю пилил интерфейсы на моках, сгенерированных из той же Swagger-спецификации. Красота, а не жизнь — никто никого не ждёт.
-
Общение. А вот это, сука, самый важный пункт. Без регулярных синхронов — хоть на стендапах, хоть на планировании — всё летело к чёрту. Обсуждали каждую мелочь: вложенность JSON'а, коды ошибок, как будем пагинацию делать. Чтобы потом не выяснять, почему у них «createdAt» — это строка, а у нас — timestamp, и кто теперь виноват.
Итог, блядь: Наличие отдельной фронтенд-бригады — это не хухры-мухры. Это жёсткая дисциплина в проектировании API и, блять, постоянная коммуникация. Зато, когда всё налажено, разработка летит вперёд со скоростью света, и продукт получается не кривой-косой, а вполне себе ничего. Но расслабляться нельзя — чуть зазеваешься, и опять начнётся: «бэкенд тормозит», «фронтенд кривой». В общем, вечный двигатель, ёпта.