§01
Overview
- What it is: a SaaS platform for launching online stores / delivery for multiple tenants (multi-tenant). Composed of services: backend (Elysia/Bun REST API, Postgres+Drizzle, Redis), admin (Next.js 15 dashboard), storefront (Next.js 15 storefront), order-panel (Next.js order panel), jobs (AWS SQS+Lambda workers, LocalStack locally), laravel (+
yandex_reciever— Yandex webhooks intake), shared (shared types). package.json author is "DavrDev" (a studio's own product / startup). - Type / status / role: web-app (multi-service SaaS) · active · lead/solo-dominant — ~86 of 108 commits from the user (+15 under the default
you@example.com, likely also him); minor contribution from Bobur (PRs). - Activity window: 2025-04-05 → 2026-05-01 (~13 months). Tidy git workflow: feature branches + Pull Requests (
Dave93/soft_delete,Dave93/api_keys,Dave93/items_list_toolbar) — a contrast with "junk-message" repos like arryt.
§02
Stack
- Languages: TypeScript (primary), PHP (laravel webhook intake service).
- Frameworks/libraries:
- *Backend:* Elysia (Bun) +
@elysiajs/swagger(OpenAPI), Drizzle ORM +drizzle-typebox, Postgres (postgres), ioredis (cache),@aws-sdk/client-sqs/client-ssm(queues/parameters),elysia-remote-dts(API-type generation), cuid2 (id). - *Frontends (admin/storefront/order-panel):* Next.js 15 (Turbopack), shadcn/ui (Radix), Elysia Eden (type-safe API client), TanStack Query, Zustand, React Hook Form + Zod v4, TipTap (rich-text), Leaflet + MapTiler (geocoding/maps),
@headless-tree(category trees), framer-motion. - *Jobs:* AWS Lambda (
@types/aws-lambda) + SQS + S3, Drizzle (per-tenant connections), zod. - *Root CLI:*
@anthropic-ai/sdk+openai+commander+boxen/figlet/ora/gradient-string/cli-table3— a custom CLI (scripts/dev.js) with commandsdev/list/generate/parse-prd. - Infra/deploy: Bun + Docker (
docker/, LocalStack for local SQS/S3), AWS Lambda deploy for jobs, Next standalone (ports admin 6868, storefront 3002, backend 3000). SSM Parameter Store for secrets. - Data: PostgreSQL (+PostGIS geospatial) via Drizzle, Redis (cache invalidated through jobs), S3 (presigned upload).
- Notable tooling: PRD documentation is huge (
prd.md139 KB,prd_tasks.md36 KB,ROADMAP_ORDERS.md38 KB,BACKGROUND_JOBS_IMPLEMENTATION_PLAN.md) — a spec-first process.
§03
What was shipped
Commits are substantive, through PRs:
- Multi-tenant API skeleton: RBAC (Users/Roles/Permissions), organizations with data isolation, catalog (hierarchical categories, products, properties), cities/terminals with geo data, news/banners, API keys (Bearer) + Swagger + public API (
/api/public/v1). - Soft-delete everywhere (
Dave93/soft_delete):deletedAt/deletedBy+ restore for cities/organizations/terminals/banners/news. - Selection toolbar / batch ops (
Dave93/items_list_toolbar): custom data tables with multi-select and a bulk-action toolbar. - Background jobs (
555c1a7): AWS SQS+Lambda system (send-email, process-image, export-data, invalidate-cache, generate-report, sync-inventory, process-order, send-notification). - Import integrations (cities/terminals), terminal stock management, cart/product refactor, API enhancements.
- Volume: 108 commits over 13 months, ~86 from the user; PR/feature-branch discipline.
§04
Technical challenges
Confirmed via CLAUDE.md + structure backend/src/services/{payment,aggregator,geo,iiko} + manifests:
- End-to-end type safety across services (
elysia-remote-dts+ Elysia Eden): backend generates DTS, the frontends (admin/storefront/order-panel) consume a typed client — a single contract without hand-duplicated types. → An advanced end-to-end type-safety pattern. - Serverless cache invalidation (CLAUDE.md §Caching + jobs): Redis cache with keys
{entity}:{id}/{entity}:list:{filters}, invalidation NOT direct but through a background job (invalidate-cache) on SQS/Lambda — write and invalidation are decoupled. → Mature cache architecture for load. - Multi-tenancy with isolation (
backend/src/services, jobs per-tenant connections): org-based data isolation, tenant context through the API and jobs, soft-delete. → True SaaS engineering, not a single-tenant app. - Real local integrations (
services/payment,services/aggregator,services/iiko): payment gateways Payme/Click/Uzum Bank, delivery aggregators Wolt/Yandex Eats/Uzum Tezkor, POS iiko/Plum — a separate laravel serviceyandex_recieverfor webhooks. → Knowledge of the Uzbek e-com / foodtech landscape. - Geospatial (PostGIS + Leaflet/MapTiler geocoding): zones/terminals with geo queries and on-map address picking.
- Spec-first AI process (root CLI +
@anthropic-ai/sdk/openai+parse-prd): an in-repo Task-Master-like tool that parses a hugeprd.mdinto tasks (prd_tasks.md). → The user doesn't just code with AI; he builds AI tooling around the spec.
§05
AI-assisted development
- Sessions found: 1 (in the local Claude Code sessions directory, subdir-form
d4e6bceb-…). Plus the repo's own.claude/and.cursor/(Cursor was also used). - What was done with AI: the single transcript wasn't deeply sampled, but the environment is clearly AI-first: CLAUDE.md as a guide for the agent, huge PRD/Roadmap docs, the in-repo
parse-prd(PRD→tasks via Anthropic/OpenAI SDK). Development was spec-driven with AI. - AI workflow patterns: spec-first (PRD → auto-decomposition into tasks → implementation), CLAUDE.md as the agent guide, Claude Code + Cursor combo. A strong example of "AI-assisted product engineering."
§06
Achievements & metrics
- Scale: 5+ services (backend, 3 frontends, jobs) + laravel webhook service + shared types; 8 background job types; public + admin API with Swagger.
- Integrations: 3 payment systems, 3 delivery aggregators, 2 POS — real commercial reach.
- Maturity: PR-based workflow, soft-delete, RBAC, multi-tenant, PostGIS, presigned S3, SSM secrets, LocalStack prod/local parity.
- Documentation: ~200 KB of PRD/roadmap/plans — rare spec discipline.