İlanHub — Mimari Plan
Repo: git.prozone.dev/kadir/ilanhub
1. Genel Bakış
| Alan |
Değer |
| Pazar |
Ukrayna |
| Arayüz dili |
Ukraynaca (uk) |
| Para birimi |
UAH (₴) |
| Stack |
NestJS, Next.js, React Admin, Docker |
| Monorepo |
Turborepo + pnpm |
| DB kararı |
Kenan belirleyecek |
Kanal Matrisi
| Tür |
Kanallar |
| İlan verme |
Telegram, Viber, WhatsApp, Web |
| Otomatik yayın |
Telegram, Viber, WhatsApp, Instagram, Web |
Instagram'dan ilan verilemez — sadece onay sonrası otomatik feed yayını.
Çoklu Proje
Tek admin altında birden fazla vertical: Horeca, İş İlanları, Araba vb. Her projenin kendi kategorileri, kanalları, fiyatları ve moderatörleri.
2. Sistem Mimarisi
Docker Servisleri
| Servis |
Görev |
| nginx |
Reverse proxy, SSL |
| api |
NestJS REST + webhooks |
| admin |
React moderatör paneli |
| web |
Next.js public site |
| bot-telegram / bot-viber / bot-whatsapp |
İlan verme botları |
| worker |
Kanal yayın kuyruğu |
| postgres |
Ana DB |
| redis |
Kuyruk + cache + bot session |
| minio |
Medya depolama |
3. Uçtan Uca Akış
Admin Kurulumu
- Proje oluştur (slug, kategori)
- İlan verme + yayın kanallarını aç
- Fiyat planı ve ödeme yöntemleri (Monopay, LiqPay, havale)
- Moderatör ata, bot token ve kanal ID gir
İlan Verme (Bot State Machine)
SELECT_PROJECT → 2. SELECT_CATEGORY → 3. SELECT_CITY
ADD_POSITIONS → 5. ENTER_DETAILS → 6. UPLOAD_MEDIA
CONFIRM_PREVIEW → 8. PAYMENT (gerekirse) → 9. SUBMITTED
Moderasyon → Yayın
- Moderatör onaylar → worker paralel yayın
- Bir kanal hata verse diğerleri devam eder
- Kullanıcıya bot ile bildirim (Ukraynaca)
Listing Durumları
draft → pending_payment / pending_moderation → approved → publishing → published
4. Ödeme (Ukrayna)
| Yöntem |
Açıklama |
| Monopay |
Kart ödemeleri, webhook onay |
| LiqPay |
PrivatBank, redirect + callback |
| Banka havalesi |
Referans kodu ILAN-{id}-{rand}, admin manuel onay, 24s timeout |
Fiyat önceliği: Abonelik kotası → Ücretsiz aylık kota → Tek ilan ücreti
5. Özellikler
5.1 Şehir Filtreleri (Faz 6)
- Oblast → Şehir hiyerarşisi (Kyiv, Lviv, Odesa + 5 şehir)
- Web:
/horeca/kyiv/ogoloshennya
- Bot:
SELECT_CITY adımı
- Kanal–şehir eşlemesi (şehir bazlı Telegram kanalı)
5.2 Abonelik Paketleri (Faz 6)
| Paket |
Fiyat/ay |
Kota |
| Стартовий |
299 ₴ |
5 ilan |
| Бізнес |
699 ₴ |
15 ilan |
| Преміум |
1499 ₴ |
50 ilan |
| Корпоративний |
3999 ₴ |
200 ilan |
5.3 VIP İlan ve Sabitleme (Faz 7)
| Boost |
Fiyat |
Süre |
| VIP badge |
+99 ₴ |
7 gün |
| Sabitleme (Pin) |
+199 ₴ |
3 gün |
| Öne çıkarma |
+149 ₴ |
5 gün |
| Kombo |
+349 ₴ |
7 gün |
Sıralama: Pin → boostScore → publishedAt
5.4 Analitik Dashboard (Faz 7)
- Kanal bazlı görüntülenme, tıklama, dönüşüm
- Gelir: ilan / boost / abonelik / havale kırılımı
- Recharts grafikleri, proje karşılaştırma
5.5 Kullanıcı Hesabı (Faz 7)
- Web:
/account/listings
- Bot:
/my_ads + Опублікувати знову (tekrar yayınla)
- Tüm kanallar tek
User kaydına bağlanır
6. UI/UX Standartları (Zorunlu)
Web
- Next.js 15 + Tailwind + shadcn/ui + Framer Motion
- OLX.ua / Work.ua kalitesinde tasarım
- Lighthouse 90+, mobil-first
- İlan wizard, skeleton loading, VIP vurgulu kartlar
Botlar
- Yanıt < 1 saniye, typing indicator
- Inline keyboard, emoji, "Крок 3 з 7" ilerleme
- Redis session 24s,
/continue ile devam
- Prod'da webhook modu (polling yasak)
7. Veritabanı (Kenan Belirleyecek)
Seçenekler: Drizzle+PostgreSQL, TypeORM+PostgreSQL, Supabase, MongoDB
Temel Entity'ler
- Project, Category, Region, City
- Listing, ListingPosition, ListingMedia, ListingBoost
- User, UserSubscription, SubscriptionPlan
- ChannelConfig, ChannelPublication, ProjectChannelCity
- Payment, ModerationLog
- AnalyticsEvent, DailyStats
8. Klasör Yapısı
9. Geliştirme Fazları
| Faz |
Hafta |
İçerik |
| 1 |
1-2 |
Altyapı, UI temeli, DB schema |
| 2 |
2-3 |
Moderasyon, Telegram bot, worker |
| 3 |
3-4 |
Viber + WhatsApp |
| 4 |
4-5 |
Instagram yayını + ödeme |
| 5 |
5-6 |
Prod Docker, CI/CD, E2E |
| 6 |
7-9 |
Şehir filtreleri + abonelik |
| 7 |
10-12 |
VIP, analitik, kullanıcı hesabı |
10. Meta Ön Koşulları (Paralel Başlat)
- Meta Business Suite hesabı
- WhatsApp Business Cloud API
- Instagram Business + Facebook Page
- Telegram @BotFather bot + kanal admin
- Viber Public Account
11. Riskler
| Risk |
Çözüm |
| Meta onay gecikmesi |
TG + Web soft launch |
| Yavaş bot |
Webhook + Redis + typing indicator |
| Sıradan UI |
shadcn/ui + Lighthouse 90+ |
| Havale sahteciliği |
Referans kodu + manuel kontrol |
| Instagram post hatası |
Diğer kanallar devam eder |
12. Yapılacaklar