Рассказываю про наш опыт со схемами и тп.
Однозначно, без каких-либо сомнений, api first и отдельный репозиторий.
Схема - это публичный контракт продукта на то, что он делает. Подход api first он вообще про изменение цикла разработки и про явное выделение этапа планирования и обдумывания.
Это та штука, которую может редактировать продакт менеджер, документировать техпис, тестировать тестировщик. У меня уже примеры с тем, когда поддержка и сейлзы могут обсуждать схему, видя за ней будущий продукт.
Api first - это та бюрократия, дорастание до которой означает некоторую зрелость команды.
Генерация схемы из кода бессмысленна, потому что не является контрактом, легко может поменяться и для тех, кто пользуется продуктом, приносит мало пользы (есть, но чуточка).
Schema first позволяет начать разработку фронтенда до того, как к бекенду прикоснутся.
Требуется активная работа с линтером. Так например в линтер в репозитории схем мы пихаем знания о том, что может наш генератор кода.
Код надо по схеме автогенерировать, чтобы он был жестким, единообразным, одинаковым, предсказуемым и отлаженным. Парстрансформы зло, но у нас есть чутка.
Наш кодогенератор мы писали сами, ничего готового не приглянулось.
Рекорды с тайпспеками генерируются из схемы, незамысловато склеиваясь с полями, которые нужны для эрланга, но не идут в схему.
Писать ручное переливание кода из рекордов из сети в рекорды в коде и обратно - плохая идея, потому что гарантированно будут ненужные ошибки.