§01
Обзор
- Что это: SaaS-платформа для запуска интернет-магазинов / доставки для множества тенантов (multi-tenant). Состоит из сервисов: backend (REST API на Elysia/Bun, Postgres+Drizzle, Redis), admin (дашборд на Next.js 15), storefront (витрина на Next.js 15), order-panel (панель заказов на Next.js), jobs (воркеры AWS SQS+Lambda, локально LocalStack), laravel (+
yandex_reciever— приём вебхуков Yandex), shared (общие типы). Автор в package.json — «DavrDev» (собственный продукт студии / стартап). - Тип / статус / роль: web-app (мультисервисный SaaS) · active · lead/solo-dominant — ~86 из 108 коммитов от пользователя (+15 под дефолтным
you@example.com, вероятно тоже он); минорный вклад Bobur (PR). - Окно активности: 2025-04-05 → 2026-05-01 (~13 месяцев). Аккуратный git-воркфлоу: feature-ветки + Pull Request'ы (
Dave93/soft_delete,Dave93/api_keys,Dave93/items_list_toolbar) — контраст с репозиториями с «мусорными сообщениями» вроде arryt.
§02
Стек
- Языки: TypeScript (основной), PHP (laravel-сервис приёма вебхуков).
- Фреймворки/библиотеки:
- *Backend:* Elysia (Bun) +
@elysiajs/swagger(OpenAPI), Drizzle ORM +drizzle-typebox, Postgres (postgres), ioredis (кэш),@aws-sdk/client-sqs/client-ssm(очереди/параметры),elysia-remote-dts(генерация типов API), cuid2 (id). - *Фронтенды (admin/storefront/order-panel):* Next.js 15 (Turbopack), shadcn/ui (Radix), Elysia Eden (типобезопасный API-клиент), TanStack Query, Zustand, React Hook Form + Zod v4, TipTap (rich-text), Leaflet + MapTiler (геокодинг/карты),
@headless-tree(деревья категорий), framer-motion. - *Jobs:* AWS Lambda (
@types/aws-lambda) + SQS + S3, Drizzle (пер-тенантные соединения), zod. - *Root CLI:*
@anthropic-ai/sdk+openai+commander+boxen/figlet/ora/gradient-string/cli-table3— кастомный CLI (scripts/dev.js) с командамиdev/list/generate/parse-prd. - Инфра/деплой: Bun + Docker (
docker/, LocalStack для локальных SQS/S3), деплой jobs на AWS Lambda, Next standalone (порты admin 6868, storefront 3002, backend 3000). SSM Parameter Store для секретов. - Данные: PostgreSQL (+PostGIS для геоданных) через Drizzle, Redis (кэш инвалидируется через jobs), S3 (presigned-загрузка).
- Заметный тулинг: PRD-документация огромная (
prd.md139 KB,prd_tasks.md36 KB,ROADMAP_ORDERS.md38 KB,BACKGROUND_JOBS_IMPLEMENTATION_PLAN.md) — spec-first процесс.
§03
Что реализовано
Коммиты содержательные, через PR:
- Скелет мультитенантного API: RBAC (Users/Roles/Permissions), организации с изоляцией данных, каталог (иерархические категории, товары, свойства), города/терминалы с геоданными, новости/баннеры, API-ключи (Bearer) + Swagger + публичный API (
/api/public/v1). - Soft-delete повсюду (
Dave93/soft_delete):deletedAt/deletedBy+ восстановление для городов/организаций/терминалов/баннеров/новостей. - Тулбар выбора / batch-операции (
Dave93/items_list_toolbar): кастомные data-таблицы с мультивыбором и тулбаром массовых действий. - Фоновые задачи (
555c1a7): система AWS SQS+Lambda (send-email, process-image, export-data, invalidate-cache, generate-report, sync-inventory, process-order, send-notification). - Интеграции импорта (города/терминалы), управление остатками терминалов, рефакторинг корзины/товаров, доработки API.
- Объём: 108 коммитов за 13 месяцев, ~86 от пользователя; дисциплина PR/feature-веток.
§04
Технические челленджи
Подтверждено через CLAUDE.md + структуру backend/src/services/{payment,aggregator,geo,iiko} + манифесты:
- Сквозная типобезопасность между сервисами (
elysia-remote-dts+ Elysia Eden): бэкенд генерирует DTS, фронтенды (admin/storefront/order-panel) потребляют типизированный клиент — единый контракт без ручного дублирования типов. → Продвинутый паттерн end-to-end type-safety. - Serverless-инвалидация кэша (CLAUDE.md §Caching + jobs): Redis-кэш с ключами
{entity}:{id}/{entity}:list:{filters}, инвалидация не напрямую, а через фоновую задачу (invalidate-cache) на SQS/Lambda — запись и инвалидация развязаны. → Зрелая архитектура кэша под нагрузку. - Мультитенантность с изоляцией (
backend/src/services, jobs с пер-тенантными соединениями): изоляция данных по организациям, tenant-контекст через API и jobs, soft-delete. → Настоящий SaaS-инжиниринг, а не однотенантное приложение. - Реальные локальные интеграции (
services/payment,services/aggregator,services/iiko): платёжные шлюзы Payme/Click/Uzum Bank, агрегаторы доставки Wolt/Yandex Eats/Uzum Tezkor, POS iiko/Plum — отдельный laravel-сервисyandex_recieverдля вебхуков. → Знание узбекского e-com / foodtech-ландшафта. - Геопространственные данные (PostGIS + геокодинг Leaflet/MapTiler): зоны/терминалы с гео-запросами и выбором адреса на карте.
- Spec-first AI-процесс (root CLI +
@anthropic-ai/sdk/openai+parse-prd): собственный in-repo инструмент в духе Task-Master, парсящий огромныйprd.mdв задачи (prd_tasks.md). → Пользователь не просто кодит с AI — он строит AI-тулинг вокруг спецификации.
§05
AI-разработка
- Найдено сессий: 1 (в локальной директории сессий Claude Code, subdir-форма
d4e6bceb-…). Плюс собственные.claude/и.cursor/репозитория (использовался и Cursor). - Что делалось с AI: единственный транскрипт глубоко не сэмплировался, но окружение явно AI-first: CLAUDE.md как гайд для агента, огромные PRD/Roadmap-документы, in-repo
parse-prd(PRD→задачи через Anthropic/OpenAI SDK). Разработка была spec-driven с AI. - Паттерны AI-воркфлоу: spec-first (PRD → авто-декомпозиция в задачи → реализация), CLAUDE.md как гайд для агента, связка Claude Code + Cursor. Сильный пример «AI-assisted product engineering».
§06
Достижения и метрики
- Масштаб: 5+ сервисов (backend, 3 фронтенда, jobs) + laravel-сервис вебхуков + общие типы; 8 типов фоновых задач; публичный + admin API со Swagger.
- Интеграции: 3 платёжные системы, 3 агрегатора доставки, 2 POS — реальный коммерческий охват.
- Зрелость: PR-based воркфлоу, soft-delete, RBAC, мультитенантность, PostGIS, presigned S3, SSM-секреты, паритет prod/local через LocalStack.
- Документация: ~200 KB PRD/roadmap/планов — редкая дисциплина спецификаций.