Репозиторий
Три приложения и документация к ним.
| Каталог | Кто им пользуется | Локальный адрес |
|---|---|---|
app | Гость и владелец | localhost:4101 |
admin | Оператор | localhost:4100 |
api | Оба интерфейса и агент | localhost:4133 |
docs | Карта продукта, VitePress | localhost:4180 |
Порты специально не 3000 и не 3333. Эти адреса уже заняты другими локальными проектами, а Nuxt при занятом порте молча переезжает в диапазон 3000–3100. Postgres слушает 5433, не 5432, по той же причине. Внутри продакшен-контейнера API остаётся на 3333: туда смотрит nginx, и этот порт наружу не торчит.
Зависимости ставит Bun, lockfile — bun.lock в каждом каталоге. Процесс API, сайта и админки — Node. Документация — VitePress. Nest и Playwright на Bun как на среде исполнения не переводились.
Поднять локально: из корня make setup, затем make dev. Первая команда заканчивается. Вторая остаётся в терминале и поднимает все четыре адреса выше. Orca ждёт только первую. Подробности для агентов — в AGENTS.md.
Слои внутри API и панелей разложены по CleanSlice: домен не знает о HTTP, данные не знают о домене. Схема Prisma живёт кусками рядом со слайсами и сшивается перед миграцией. Сшитый файл руками не правят.
Панели — Nuxt, без серверного рендера. В проде они становятся статикой. Клиент API в них сгенерирован и закоммичен, потому что при сборке образа спецификации OpenAPI рядом нет.