Files
menulio/docs/PROGRESS.md
T
2026-08-20 01:51:59 +03:00

6.3 KiB
Raw Blame History

Progress Log

Faz tanımları için ROADMAP.md. Bu dosya ne yapıldığını, ne yapılmadığını ve bilinen sınırlamaları takip eder — faz atlarken buraya bakıp neyin gerçek neyin stub olduğunu hatırlamak için.

Faz 0 — Altyapı (2026-08-19)

  • pnpm monorepo: apps/api (Fastify), apps/web (Next.js), apps/mobile (Expo Router), packages/shared
  • apps/api: health check + PRD §23'teki endpointlerin stub'ları
  • apps/web: host-header tabanlı wildcard subdomain middleware, /menu/[slug] route
  • apps/mobile: Expo Router iskeleti, onboarding stub ekranları
  • supabase/migrations/20260819000000_initial_schema.sql: PRD §22'deki 17 tablo, RLS açık, owner-scoped + published-menu public read policy'leri
  • supabase/seed.sql: 5 başlangıç teması
  • Doğrulama: tsc --noEmit tüm app'lerde temiz, API /health gerçekten çalıştırılıp test edildi

Faz 1 — Manuel akış (2026-08-19)

Hedef: Restoran sahibi mobil uygulamada elle veri girip gerçek bir QR menüyü yayınlayabilsin. Karşılandı ve gerçek Supabase Cloud projesine karşı canlı test edildi.

  • API: auth middleware (Supabase JWT doğrulama, requireAuth/requireRestaurantMember) + restaurant CRUD
  • API: menu/category/item CRUD + publish/unpublish (menus, menu-categories, menu-items route'ları)
  • API: QR üretimi (PNG/SVG, /q/:id stabil redirect URL ile — PRD §12)
  • API: /me/restaurant — mobile cold-start rehydration için
  • Supabase: Faz 1 RLS policy migration'ı (20260819010000_public_menu_access.sql)
  • Web: gerçek public menü render (Supabase'ten canlı veri, 5 zengin tema desteği, canlı arama, sticky kategori barı, ürün detay modalı)
  • Web: /q/[id] QR redirect route'u
  • Mobile: auth ekranları (email login/register) + Supabase client (AsyncStorage session)
  • Mobile: restoran onboarding formu → API'ye bağlı
  • Mobile: menü editörü (kategori/ürün CRUD, yayınla butonu) — apps/mobile/src/app/menu/index.tsx
  • Mobile: QR ekranı (üret, göster, native share) — apps/mobile/src/app/menu/qr.tsx

Faz 2 — AI Menu Scanner (2026-08-19)

Hedef: Menü fotoğrafını çekip/yükleyip AI ile saniyeler içinde dijitalleştirmek, onaylayıp canlı menüye aktarmak.

  • Shared: AI çıkarma (AiExtractedCategory, AiExtractedItem), yanıt (AiImportResponse) ve uygulama (AiImportApplyPayload) veri sözleşmeleri.
  • API: apps/api/src/lib/ai-scanner.ts — Gemini 1.5 Flash Vision, OpenAI GPT-4o Vision ve akıllı mutfak sezgisel fallback motoru.
  • API: POST /menus/:id/import-ai — menü görselini analiz eder, ai_imports ve ai_import_items denetim loglarını oluşturur, confidence skorları hesaplar.
  • API: GET /ai-imports/:id — kaydedilmiş import durumunu döner.
  • API: POST /ai-imports/:id/apply — AI Review ekranından onaylanan/düzenlenen kategori ve ürünleri menüye (menu_categories, menu_items) topluca yazar.
  • Mobile: expo-image-picker entegrasyonu (kamera & galeri izinleri ve fotoğraf seçimi).
  • Mobile: apps/mobile/src/app/(onboarding)/scan.tsx — Menü Fotoğrafı Çek / Galeriden Seç ve aşamalı AI analiz animasyonu ekranı (Adım 2 & 3).
  • Mobile: apps/mobile/src/app/(onboarding)/ai-review.tsx — AI Review & Onay ekranı (Adım 4):
    • Kategori bazlı ürün listesi
    • Düşük güven skorlu öğeler için sarı uyarı rozeti (⚠️ Düşük Güven (Fiyatı Kontrol Edin))
    • Anında ürün adı, fiyat ve açıklama düzenleme
    • Kategori/ürün silme ve ekleme
    • "✓ Menüyü Onayla ve Kaydet" butonu ile menüye aktarma
  • Mobile: apps/mobile/src/app/menu/index.tsx içerisine " AI ile Menü Fotoğrafı Tara" tetikleyicisi.
  • Mobile: apps/mobile/src/app/account/index.tsx — Hesabım & Restoran Ayarları ekranı:
    • Kullanıcı profili ve aktif restoran durumu
    • Restoran adı, telefon ve adres güncelleme (PATCH /restaurants/:id)
    • Canlı menü linki kopyalama ve tarayıcıda açma
    • 5 Temadan birini seçip menüye anında uygulama (GET / PUT /restaurants/:id/theme)
    • Abonelik plan durumu
    • Çıkış yapma (Sign out) ve oturum temizleme

Faz 3 — Web Frontend & 5 Menü Şablonu Engine (2026-08-20)

  • Web: apps/web/src/app/page.tsx — Lüks Menulio SaaS Landing Page (Hero, 5 Şablon vitrini, Nasıl Çalışır, İstatistikler, Canlı Demo linkleri).
  • Web: apps/web/src/lib/theme.ts — 5 Ayrı Tasarım Şablonu Tanımları:
    1. 🌟 Elegant Gold (Fine dining & lüks restoranlar - Altın & Krem, serif tipografi)
    2. 💎 Modern Sapphire (Kafe & Fast-Casual - Mavi safir & beyaz, 2'li grid layout)
    3. 🌙 Luxury Dark (Gece kulübü & Kokteyl bar - Obsidian & Kehribar lüks mod)
    4. ❄️ Nordic Minimal (Butik kahveci & fırın - Sade monokrom liste mizanpajı)
    5. 🍷 Classic Bistro (Meyhane & Trattoria - Toskana bordo & rustik doku)
  • Web: apps/web/src/components/TemplateGalleryClient.tsx & /templates — İnteraktif şablon galerisi ve canlı telefon simülatörü.
  • Web: apps/web/src/app/demo/page.tsx — Tam ekran interaktif demo menü.
  • Mobil & API: Yerel geliştirme ortamına uyumlu URL ve QR mimarisi (http://localhost:3000/menu/[slug]).
  • Mobil: ThemeSelectorSheet.tsx — Menü editöründen tek tıkla 5 şablondan birini seçme ve anında aktifleştirme.
  • Mobil: Ürün Görseli Ekleme & Düzenleme (expo-image-picker ile AddItemModal ve ItemDetailSheet içinde galeri seçimi ve canlı önizleme).
  • Mobil: MenuItemCard.tsx — Menü ürün kartlarında görsel küçük resim (thumbnail) desteği.
  • Mobil: AccountScreen.tsx — Restoran Logosu yükleme/değiştirme ve detaylı restoran bilgileri güncelleme.
  • Mobil: Alt barda kalıcı "👁️ Önizle" butonu ile tek tıkla canlı menüyü tarayıcıda açma.
  • Web: apps/web/src/components/PublicMenuClient.tsx — Anında arama, masa numarası parametresi (?table=X), garson çağır / hesap iste floating barı, ürün detay modalı ve canlı tema değiştirici çekmecesi.

Kapsam dışı bırakılanlar (bilinçli, sonraki fazlara ertelendi):

  • Apple/Google login (V1.5+) — sadece email auth
  • Custom domain (V1.5) — sadece otomatik subdomain
  • Abonelik/RevenueCat (Faz 5) — bu fazda erişim kısıtı yok
  • Logo yükleme (media/storage akışı V1.5)