Назад в архив
IV. Клиентские проекты и логистические платформывитриналидклиент анонимизирован

Restaurant Chain ERP — 5-Service Monorepo

Мультисервисный монорепозиторий для сети ресторанов Restaurant chain (UZ) / Restaurant chain (UZ): 5 сервисов (admin, backend, cron, duck_api, merchants_api) со сквозной типобезопасностью. Пользователь — ведущий автор (~44% коммитов за ~2.7 года).

Статус
активный
Период
2023-08-05 → 2026-05-08
AI-сессий
1
Стек
Языки
TypeScript
Фреймворки · Инфра
ElysiaBunNext.js 15React 19Drizzle ORMHonoDuckDBBullMQRedis
§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 config experimental.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.
§07

Контрибьюторы

git shortlog · все ветки

  1. Dave93410
  2. i7671757231
  3. Boburt129
  4. shahzodsalimsakov122
  5. root51
5 контрибьюторов943 коммитов всего
Сейчас

Открыт к ролям Senior / Staff инженера и избранному фрилансу — продакшн-AI, платформы и full-stack разработка.

Связаться