پروژهی چالش ترب: تجربهی خوب خرید حضوری با یک ویجت هوشمند که مغازهی درست را در درستترین نقطهی شهر پیدا میکند. مینیمال، سریع و فارسی.
تربچه با یک دیتاست واقعی از ترب کار میکند:
| مغازهها | ۶٬۴۷۶ |
| کالاها | ۲۲۵٬۹۰۳ |
| آفرها | ۲۹۷٬۷۱۸ |
| موتور دیتابیس | SQLite + FTS5 (فایل data/app.db) |
قابلیتها:
- چت هوشمند: سناریوی خرید را میپرسد، کالا را پیدا میکند، ارزانترین آفرها را با ضمانت و موجودی میآورد
- نقشهی تعاملی: مغازههای نزدیک با Leaflet، فاصله و مسیر بهتری برای خرید حضوری
- مغازهها و مقایسه: کارت آفرها، مقایسهی قیمت، جایگزینهای ارزانتر
- پیگیری: ثبت پیگیری قیمت و اطلاعرسانی
پیشنیاز: Node.js >= 20
npm install # postinstall خودش data/app.db را از قطعههای فشرده میسازد
npm run dev # http://localhost:3000دیتابیس از دو قطعهی data/app.db.gz.part-00 و data/app.db.gz.part-01 ساخته
میشود (بهخاطر سقف ۱۰۰MB گیتهاب). اسکریپت scripts/extract-db.js این کار را
در postinstall انجام میدهد — idempotent است و اگر data/app.db موجود باشد
دست نمیزند.
بیلد پروداکشن:
npm run build
npm start.env.example را به .env.local کپی کن. همهی متغیرها اختیاریاند؛ بدون آنها
هم سرچ، نقشه، مقایسه و آفرها کار میکنند — فقط چتِ هوشمندِ LLM خاموش میماند.
LLM_BASE_URL=... # آدرس سرویس LLM
LLM_API_KEY=... # کلید (هرگز در گیت نمیآید)
LLM_MODEL=...
liara.json آماده است (platform: next, port: 3000). با npm run build و
npm start روی هر PaaS استاندارد Node هم بالا میآید.
src/app/ صفحات و API Routes (search, chat, map, offers, ...)
src/lib/db.ts اتصال SQLite + اسکیما
src/lib/search.ts جستجوی FTS5 + گسترش پرسوجو
src/components/ UI (چت، نقشه، کارت آفر، مقایسه)
scripts/ingest.ts ساخت دیتابیس از CSV خام (دیتاست کامل محلی است)
ساختهشده برای چالش ترب × لیارا — با ❤️ و خیلی قهوه.