§01
Обзор
- Что это: ERP / back-office платформа для франчайзинговой ресторанной сети Restaurant chain (UZ) / Restaurant chain (UZ). Управляет пользователями/ролями/правами, локациями и терминалами, номенклатурой, накладными, OLAP-отчётами, расписаниями, стоп-листами, планами продаж, сверкой платёжных шлюзов. 5 независимых сервисов в одном репозитории, общие типы через TS path-алиасы.
- Тип / статус / роль: web-app / бэкенд-платформа (монорепозиторий) / active (последний коммит 2026-05-08) / lead — пользователь (Davr / Davron Yuldashev / Dave93, суммарно) = 410 из 939 коммитов (~44%), топ-автор. Команда: Ilhombek (~208), Shahzod (~122), Bobur (~121).
- Период активности: 2023-08-05 → 2026-05-08 (~2 года 9 месяцев) — самый долгоживущий проект в портфолио. 939 коммитов.
§02
Стек
- Языки: TypeScript (везде), Bun + Node.
- Сервисы (по CLAUDE.md + манифестам):
- admin/ — дашборд на Next.js 15 + React 19 (Bun, порт 6762), HeroUI + Radix UI, Eden (типизированный клиент к бэкенду — импортирует тип
Appиз backend). - backend/ — API на Elysia поверх Bun, Drizzle ORM + PostgreSQL, Redis (сессии, ioredis + item-store-redis), BullMQ (очереди), JWT/bearer, OpenAPI, websockets. 44 доменных модуля (users, roles, permissions, invoices, report_olap, sales_plans, terminals, nomenclature, stoplist, timesheet, scheduled_reports, …).
- cron/ — Bun + node-cron/@elysiajs/cron: синхронизация с iiko, бэкфилл OLAP, назначение ролей (порт 8080).
- duck_api/ — Hono + DuckDB (+ duckdb-async) — синхронизация аналитического хранилища данных (Node, tsc-build).
- merchants_api/ — Elysia + Puppeteer: скрейпит отчёты из платёжных шлюзов (Payme, Click, Yandex, Express, iiko-kassa), tRPC.
- Инфра/деплой: PM2 (office_api/office_cron/office_duck/office_merchant_api), по
pm2.config.jsна сервис.dump.rdb(снапшот Redis). gRPC-тулинг (protoc-ts). ⚠️ Зоопарк lockfile-ов (bun.lockb + pnpm-lock + yarn.lock + package-lock) — несогласованность. - Данные: PostgreSQL (Drizzle, схема
backend/drizzle/schema.ts), Redis, DuckDB (OLAP).
§03
Что реализовано
Пользователь — ведущий разработчик платформы (~44% за 2.7 года).
- Backend (Elysia): 44 модуля по единому паттерну (Elysia-плагин на модуль,
controller.ts+dto/, контекст-плагинctx). Домены: users/roles/permissions (RBAC), накладные и их позиции, OLAP-отчёты, terminals/locations, номенклатура (+ маппинг организаций), расписания/timesheet, стоп-листы, планы продаж, scheduled_reports, hanging_orders, internal_transfer и т.д. - Admin (Next.js 15): дашборд со сквозной типизацией через Eden (тип
Appбэкенда импортируется во фронтенд — типобезопасные вызовы без ручных DTO). - merchants_api: автоматический сбор отчётов из 5 платёжных шлюзов через Puppeteer (сверка эквайринга).
- cron: интеграция с iiko (POS), бэкфилл OLAP, автоназначение ролей.
- duck_api: аналитическая витрина данных на DuckDB.
- Объём: 410 коммитов пользователя; 5 сервисов; 44 бэкенд-модуля; ~2.7 года эволюции.
§04
Технические челленджи
Подтверждено CLAUDE.md / манифестами / структурой.
- Сквозная типобезопасность через границу сервисов → admin импортирует тип
Appбэкенда на Elysia и вызывает API через Eden; в Next configexperimental.externalDir: true+ path-алиасы (@backend/*,@admin/*) вместо npm workspaces. Сильный паттерн «типы как контракт» без кодогенерации. - Модульная архитектура Elysia → 44 домена как изолированные плагины с единым общим контекстом; масштабируемо и единообразно. Зрелый дизайн бэкенда.
- Polyglot persistence под задачу → PostgreSQL (OLTP, Drizzle) + Redis (сессии/кэш/очереди) + DuckDB (OLAP-витрина, отдельный сервис на Hono). Осознанное разделение OLTP/OLAP.
- Очереди и фоновая работа → BullMQ (backend) + сервис cron (синхронизация iiko, бэкфилл OLAP) — продуманная обработка фоновых задач.
- Интеграции с реальным бизнесом → iiko POS и скрейпинг 5 платёжных шлюзов (Payme/Click/Yandex/Express) через Puppeteer для финансовой сверки — нетривиальная, высокоценная автоматизация.
- Долгая эволюция → разные версии Elysia по сервисам (0.8 в merchants против 1.4 в backend) — типичный техдолг живого монорепозитория.
§05
AI-разработка
- Найдено сессий: 1 под локальным ключом сессий Claude Code для этого проекта (1
.jsonl). - Что делали с AI: есть подробный
CLAUDE.md(8.5 КБ) — инженерный гайд по репозиторию (паттерн добавления модуля, алиасы, имена PM2, «не заявляй, что тесты прошли, если реально их не гонял»). AI-ассистированное сопровождение большого legacy-монорепозитория. - Паттерны AI-воркфлоу: использование CLAUDE.md как «карты» для онбординга AI в сложный мультисервисный репозиторий — хорошая практика.
§06
Достижения и метрики
- 939 коммитов / ~2.7 года, пользователь ~44% (410) — ведущий автор.
- 5 продакшн-сервисов под PM2; 44 бэкенд-модуля.
- Интеграции: iiko POS + 5 платёжных шлюзов (Payme/Click/Yandex/Express/iiko) + OLAP.
- 3 хранилища данных (Postgres/Redis/DuckDB), очереди BullMQ, websockets, OpenAPI.
- Сквозная типобезопасность front↔back через Eden.