Arxivga qaytish
I. Shaxsiy loyihalar va freymvorkvitrinayakka

EcoMap — fuqarolik eko-monitoringi

Fuqarolik platformasi EcoMap (O'zbekiston): aholi ekologik qoidabuzarliklar haqida foto va geoteglar bilan xaritada xabar beradi. Ikki iteratsiyada bajarilgan yakka loyiha — v1 Supabase asosida, v2 esa maxsus monorepo stek ShipKit ustida qaytadan yozilgan.

Holat
faol
Davr
2025-08-09 → 2026-03-08
AI sessiyalar
99
Stek
Tillar
TypeScriptSQL
Freymvorklar · Infra
Next.js 16Elysia.jsDrizzleBetter AuthgrammYTurborepo
§01

Umumiy ko'rinish

  • Bu nima: ekologik qoidabuzarliklar haqidagi xabarlarni qabul qilish va kuzatish uchun civic-tech mahsulot: markerli xarita (Leaflet), foto/media yuklash, qoidabuzarlik tafsilotlari sahifasi, "Hal qilishga yordam ber" tugmasi, Telegram autentifikatsiyasi va bot, ko'p tillilik (ru/uz/en), fon ishlari, admin panel. Shaxsiy mahsulot/startap ko'rinishida (build-in-public potensiali bor).
  • Turi / holati / roli: web-app (fullstack monorepo) / aktiv / yakka (kommitlarning ~96% foydalanuvchiniki; v2 da — Shahzoddan 4 ta kommit).
  • Faoliyat oynasi: 2025-08-09 → 2026-03-08. Ikki papka = ikki iteratsiya:
  • ecomap_new (v1, avgust–dekabr 2025, 51 kommit): Next.js + Supabase.
  • ecomap_full (v2, fevral–mart 2026, 94 kommit): ShipKit monorepo stek (Elysia/Drizzle/BetterAuth) ustida to'liq qayta yozish.
§02

Stek

  • v2 (`ecomap_full`, joriy): Turborepo monorepo (apps/web, apps/admin, apps/api, apps/jobs + 10 ta paket). Next.js 16 + React 19, Elysia.js (Bun) API va Eden Treaty (type-safe chaqiruvlar), Better Auth (+Redis session kesh), Drizzle ORM + PostgreSQL, grammY (+@grammyjs/conversations) Telegram bot, sharp (qoidabuzarlik fotolarini qayta ishlash), Resend (email), next-intl (ru/uz/en), Tailwind v4, shadcn/ui, Swagger.
  • v1 (`ecomap_new`): Next.js + Supabase (ssr + supabase-js), TanStack Query, keng Radix/shadcn, Tiptap (rich-text), @ai-sdk/openai (AI kategoriyalash/qayta ishlash), grammY, fon navbati, systemd (ecomap-queue.service).
  • Infra: Bun, Turborepo, deploy skriptlari (API bun run orqali, native sharp sababli), navbat uchun systemd, Redis.
  • Ma'lumotlar: v2 da PostgreSQL (Drizzle); v1 da Supabase Postgres.
§03

Nima qilindi

  • v1 (Supabase): xalqarolashtirish (ru/uz/en — header/footer/home/map), locale-ga mos redirectlar (cheksiz-redirect tuzatildi), fon navbati + Telegram bot, AI SDK integratsiyasi, Tiptap muharriri. Claude GitHub Actions sozlandi (PR Assistant + Code Review vorkflovlari).
  • v2 (monorepo, qayta yozish): migratsiya rejasi (docs/migration-plan/TASKS.md), Telegram-auth oqimi (ko'plab iteratsiyalar: postMessage auth_result, credentials: include bilan cross-origin session cookie, setSessionCookie, bot email orqali dublikat-foydalanuvchidan himoya, telegram→profiles sinxronizatsiyasi), auth-route konsolidatsiyasi, NODE_ENV o'rniga USE_SECURE_COOKIES, xarita va media proplari bilan qoidabuzarlik sahifasi, deploy skriptlari, --external sharp (native dep).
  • Hajm: jami ~145 kommit (51 v1 + 94 v2), ~139 tasi foydalanuvchidan. Aktiv iterativ ishlanish, versiyalar orasida to'liq qayta yozish.
§04

Texnik chellenjlar

  • Arxitektura migratsiyasi v1→v2 (Supabase BaaS → self-hosted Elysia + Drizzle + Better Auth monorepo): hujjatlashtirilgan reja (docs/migration-plan/TASKS.md, progress jadvali bilan). → BaaS vendor lock-in'dan nazorat ostidagi stek tomon ongli o'tishni ko'rsatadi; kuchli kontent hikoyasi.
  • Web'da Telegram autentifikatsiyasi (apps/api, kommitlar seriyasi): postMessage {event:'auth_result',result:{...}}'ni qayta ishlash, Better Auth orqali session cookie o'rnatish, cross-origin cookie'ni hal qilish (credentials: include), dublikatdan himoya (bot-email formati telegram_{id}@ecomap.uz'ni tekshirish), /me'da telegram ma'lumotlarini profiles'ga sinxronlash. → Haqiqiy, oson bo'lmagan auth muhandisligi ("ustidan ulangan OAuth" emas).
  • Type-safe fullstack Eden Treaty orqali (Elysia → klient): codegen'siz API'ning uchdan-uchgacha tiplanishi.
  • Rasm qayta ishlash (sharp) qoidabuzarlik fotolari uchun + to'g'ri native-dep build (--external sharp, bun run orqali deploy).
  • Fon ishlari (apps/jobs + packages/jobs-shared + navbat + systemd) — ish HTTP yo'lidan chetga chiqarildi.
  • AI qayta ishlash (v1, @ai-sdk/openai) — ehtimol xabarlarni kategoriyalash/xulosalash.
§05

AI yordamida ishlab chiqish

  • Topilgan sessiyalar: v2 uchun lokal Claude Code sessiyalar katalogida 99 .jsonl (~42 MB) — v2 qayta yozishda juda intensiv Claude Code foydalanishi. (v1 ecomap_new alohida yo'lga ega va to'g'ridan-to'g'ri CC sessiyalari yo'q, biroq git'da claude[bot] bor.)
  • AI bilan nima qilingan: butun v2 qayta yozish docs/migration-plan/TASKS.md'ga amal qilgan holda Claude Code orqali olib borildi (CLAUDE.md vazifalarni ✅ bilan belgilash va progress jadvalini yangilashni talab qiladi — strukturaviy AI-boshqaruvli jarayon).
  • AI vorkflow patternlari (kuchli brend signali):
  • v1'da Claude GitHub Actions: claude/issue-N-* branchlar → PR, "Claude PR Assistant" va "Claude Code Review" vorkflovlari (7 ta claude[bot] kommit).
  • v2'da AI bilan reja-boshqaruvli ishlanish: majburiy progress nazorat nuqtalari bilan TASKS.md orqali migratsiya.
  • .mcp.json, .playwright-mcp/, .kombai/ — MCP tooling va UI uchun Playwright MCP.
§06

Yutuqlar va metrikalar

  • 2 iteratsiyada bajarilgan to'liq civic-tech mahsulot, zamonaviy self-hosted stekga qayta yozilgan.
  • v2: Turborepo'da 4 ta app (web/admin/api/jobs) + 10 ta paket, yakka.
  • ~7 oyda ~145 kommit; v2'da 99 CC sessiya (42 MB).
  • Integratsiyalar: Telegram (auth + bot), xaritalar (Leaflet), fotolar (sharp), email (Resend), AI (v1'da OpenAI).
§07

Hissa qo'shganlar

git shortlog · barcha branchlar

  1. Dave93139
  2. claude[bot]7
  3. shahzodsalimsakov4
3 hissadorjami 150 ta kommit
Hozirda

Senior / Staff muhandis rollari va tanlab olingan frilansga ochiqman — prodakshn AI, platforma va full-stack ishlar.

Bog'lanish