Контракт, из которого выведены сервер, клиенты, документация и проверки
Операция объявляется один раз. Go-сервер, TypeScript- и Kotlin-клиенты, каталог и справочник выводятся из этого объявления, а расхождение между ними не собирается.Спека, которую агент может проигнорировать, — документация. Контракт, из которого выведены сервер, клиенты, docs и проверки, — гарантия.
Локальный старт
Три команды от чистого клона до продукта, открытого в браузере.
bin/factory doctor --fix
Проверить окружение, создать .env и поставить зависимости.
bin/factory new my-shop
Создать продукт, сгенерировать сервер и клиенты, запустить и открыть его.
Добавить операцию в контракт: сервер, клиенты и docs — из неё же.
Demo без учётной записи
Одна кнопка открывает read-only рабочее пространство: продукты, задания, аудит и одно защищённое действие уже заполнены demo-данными. Сессия действует 30 минут, изменения недоступны, а данные периодически сбрасываются.Чтобы вместо этого поднять все четыре продукта и Control Plane локально с demo-значениями, используйте команду ниже; кнопка OAuth в этом профиле намеренно не доводит вход до внешнего провайдера.
make demo
Что понадобится
Docker для локальной инфраструктуры; версии Go, Node и pnpm закреплены в .tool-versions.
Quickstart рассчитан на 15 минут. Измерено на чистом клоне: doctor --fix — 51 секунда, включая первую сборку CLI. Для самой команды new собственного замера пока нет.
Хостинга Factory не существует: publish собирает бандл, который вы разворачиваете сами на Docker-хосте или у партнёра.
Что проверяется автоматически
Эти проверки идут на каждом merge и на них падает `make check`; ничего из перечисленного не обещание, а команда, которую можно запустить самим.
factory check security — Row-level security и авторизация по умолчаниюКаждая таблица с tenant-данными, выведенная из миграций продукта, обязана иметь RLS-политику; каждая не-`x-public` операция контракта обязана объявить `x-permission`, и генерируемая маршрутизация обязана его применять — не по памяти разработчика, а по проверке.
factory check contracts — Контракт — единственный источник APIПуть, тип запроса и ответа объявлены один раз в контракте; сервер, TypeScript- и Kotlin-клиенты выводятся из него, а ручной fetch или несведённый маршрут не проходят проверку.
factory check migrations — Целостность цепочки миграцийКаждая миграция пронумерована подряд и защищена контрольной суммой; выпущенная запись реестра неизменяема.
factory check arch — Границы платформы и продуктаПродуктовый код может импортировать platform, platform никогда не импортирует продукт; пространство API-маршрутов всегда принадлежит Go-сервису, а не Next.js.
factory check auth — Общая идентификацияПротокол аутентификации существует только в platform/auth; каждый продукт подключает его через общую фабрику, а не переписывает заново.
factory check target-state — Публичные заявления соответствуют кодуДатированное состояние roadmap проверяется на актуальность registry, а публичная страница — на обещания сервиса, которого не существует.
Если что-то не запустилось
bin/factory doctor
Диагностика окружения без изменений; --fix применяет найденные исправления.
bin/factory dev doctor --ports
Показывает, какие нужные порты заняты, каким процессом и как их освободить.
bin/factory dev shutdown --all
Останавливает процессы, оставшиеся от предыдущего запуска.
bin/factory dev --port-base 4000
Запускает второй чекаут на этой же машине в другом диапазоне портов.