§01
Umumiy ko'rinish
- Bu nima: tozalash kimyoviy vositalari uchun to'liq stekli B2B sotuv platformasi. Ochiq sayt (katalog, sohalar, blog, sarf kalkulyatorlari, lidlar), Elysia API, RBAC bilan admin (lidlar, katalog, tijorat takliflari) va menejerlar uchun Telegram mini-ilova (kalkulyator + taklif PDF generatsiyasi). Maxsus SaaS boilerplate "ShipKit" (DavrApps brendi) asosida qurilgan.
- Turi / statusi / roli: web-app (monorepo) / faol / yakka (kommitlarning ~99% foydalanuvchiniki; bitta tashqi hissa qo'shuvchi 2 ta kommit bilan).
- Faollik oynasi: 2025-11-10 → 2026-05-14, ~6 oy zich ishlab chiqish, jonli (eng so'nggi kommitlar 2026-yil may oyidagi UI/kontent o'zgarishlari).
§02
Stek
- Tillar: TypeScript (strict), SQL (Drizzle).
- Freymvork/kutubxonalar: Next.js 16 (App Router,
[locale]routing, Turbopack, React 19), Elysia.js (Bun-native API, tiplashtirilgan), Drizzle ORM, Better Auth (+ RBAC, access-control), grammY (Telegram bot), @react-pdf/renderer (taklif PDF'lari), next-intl v4.5 (useExtracted+.po/gettext), Tailwind v4 + shadcn/ui, Fuse.js (qidiruv), Polar.sh (boilerplate'dan). - Infra/deploy: Turborepo (monorepo, 4 ta ilova + 10 ta paket), Bun 1.3 (runtime + paket menejeri), deploy-skill (nginx + systemd + SSL).
.mcp.json,.claude/skills/— AI-native scaffolding. - Ma'lumotlar: PostgreSQL (Drizzle, 16+ jadval), Redis (ioredis — kesh, rate limit, foydalanish).
- E'tiborga loyiq tooling:
.penfayllar (Pencil — dizayn maketlari), CLI paketi, React Email + Resend, poydevor sifatidagi maxsus boilerplate.
§03
Nima qilindi
Kommit xabarlari toza, conventional commits (feat(...), fix(...), refactor(...)) formatida — eski loyihalardan farqli o'laroq.
- Kalkulyator domen modeli —
object_types,object_type_parameters,consumption_rules,calculation_periodsjadvallari: obyekt turi/parametrlariga ko'ra kimyoviy vosita sarfini hisoblash. - Sarf kalkulyatori + bin-packing (
feat(calc): industry-specific ... savings calculator— carwash/horeca/cleaning): kerakli hajmni qoplash uchun qadoqlash o'lchamlarini tanlaydi. - Tijorat takliflari —
quotes/quote_items, atomik raqamlashKP-00042, PDF generatsiyasi (ru/uz, QQS, chegirmalar). - Lidlar —
feat(leads): server-side /api/lead bridge posts to Telegram group via bot+localStorage retry queue(xato yuz berganda mijoz tomonidagi qayta urinish navbati). - Telegram menejer onboarding'i — taklif tokenlari (
inv_...), mini-ilova kalkulyatori. - Moderatsiyalanadigan izohlarga ega blog —
feat(blog): moderated comments system end-to-end, 6 ta SEO maqola. - Mahsulotlarni taqqoslash + qidiruv —
feat(compare): /compare side-by-side,agent/search: catalog search with Fuse.js (Ctrl+K). - Sayt bo'ylab i18n — next-intl
useExtracted+.po, 3 til (ru/uz/en). - SEO — sitemap, robots, JSON-LD, 301 redirect'lar bilan route kanonikalizatsiyasi, xizmat sahifalarida noindex.
- Hajm: ~6 oyda 189 ta kommit. E'tiborga loyiq: ish
agent/*branch'lar orqali boradi (agent/calculators, agent/sample, agent/compare, agent/search, agent/routes-dedup) — master'ga birlashtirilgan parallel AI agentlar.
§04
Texnik chellenjlar
- Unit testlar bilan greedy bin-packing (
apps/api/src/modules/v1/calculator/pack-greedy.ts+pack-greedy.test.ts): keraklirequiredMlhajmini qadoqlash o'lchamlari to'plami bilan qoplash — hajm bo'yicha kamayish tartibida saralash, eng kichik qadoqdan tashqari hammasi uchunfloor, qoldiqni yaxlitlash uchunceil, pulBigIntda (UZS). → Haqiqiy algoritm + TDD; CRUD emas, muhandislik darajasidagi ishning isboti. - BigInt-xavfsiz pul (
apps/api/src/lib/bigint-json.ts): narxlar/jamilar Drizzlebigintsifatida saqlanadi (float aniqlik muammolarisiz), globalBigInt.prototype.toJSONesa Elysia javoblaridagi serializatsiyani tuzatadi. Batafsil izoh nima uchun number emas, aynan shu ekanligini asoslaydi. → Pul arifmetikasiga qasddan qilingan yechim. - Atomik taklif raqamlash (
quotes/number.ts):UPDATE counters SET value = value + 1 ... RETURNING valuetaklif insert'i bilan bitta tranzaksiya ichida → race-xavfsizKP-NNNNNketma-ketligi. - Init-race himoyali singleton Telegram bot (
telegram/bot.ts, grammY): ikki tomonlama guard (botSingleton+botInitPromise), not_found/used/expired tekshiruvlari bilan bir martalik takliflar,web_apptugmasi orqali mini-ilova ishga tushirish. - Taklif PDF generatsiyasi (
packages/pdf, @react-pdf/renderer): maxsus kirill shriftlar, ru/uz, taklif payti narx snapshoti (unitPriceUzsSnapshot), QQS/chegirma hisoblash, imzolar/yuridik rekvizitlar. - Katta miqyosda i18n (next-intl v4.5
useExtracted+ gettext.po, Next 16 uchunproxy.ts): har bir sahifaning 3 tildagi professional lokalizatsiyasi. - Monorepo arxitekturasi (Turborepo): ilovalarni (web/api/admin/miniapp) va umumiy paketlarni (auth/db/cache/ui/email/entities/pdf/cli)
workspace:*bilan toza ajratish.
§05
AI yordamida ishlab chiqish
- Topilgan sessiyalar: 2 ta (ushbu loyiha uchun lokal Claude Code sessiyalari katalogi), jami ~13 MB (9.3 MB + 3.3 MB) — juda intensiv AI foydalanish.
memory/katalogi mavjud. - AI bilan nima qilingan: har bir sahifaning ommaviy tarjimasi (
useExtracted/getExtracted), kalkulyator funksiyalari, taqqoslash/qidiruv, SEO audit, blog kontenti generatsiyasi. Sessiyalar kontekst sifatida loyihaning o'zI18N_GUIDE.mdfaylini o'z ichiga oladi. - AI vorkflow patternlari (kuchli brend signali):
- Git branch'lardagi parallel agentlar — master'ga birlashtirilgan
agent/calculators,agent/sample,agent/compare,agent/search,agent/routes-dedup: foydalanuvchi mustaqil funksiyalarni AI agentlar bo'ylab parallellashtiradi. - AI-native repozitoriy —
CLAUDE.md("real ishlab chiqarish buglaridan" olingan 210+ qatorlik qoidalar),.claude/skills/(deploy/dev/ui-ux/polar),.mcp.json. - superpowers skills — sessiyalarda
superpowers:using-superpowerschaqirilgani ko'rinadi. - Boilerplate AI yordamchilari uchun mo'ljallangan (Claude Code/Cursor/Copilot/Windsurf).
§06
Yutuqlar va metrikalar
- 4 ta ilova + 10 ta paket bitta Turborepo'da, yakka ishlab chiqish.
- 16+ DB jadval (Drizzle): posts, leads, products, product_variants, object_types, consumption_rules, calculation_periods, managers, manager_invites, quotes, quote_items, settings, counters, blogComments, subscriptions.
- 3 til UI to'g'ri gettext pipeline orqali.
- Haqiqiy mahsulot eng zamonaviy 2026 stekida (Next 16 / React 19 / Bun / Elysia / Tailwind v4).
- README poydevorni ShipKit sifatida joylashtiradi — bu boilerplate ustida "4+ jonli SaaS qurilgan".