1071 lines
21 KiB
Markdown
1071 lines
21 KiB
Markdown
# AI QR Menü SaaS — PRD
|
||
|
||
## 1. Ürün Özeti
|
||
|
||
### Ürün Tanımı
|
||
|
||
Restoranların fiziksel menülerini yalnızca telefon kamerasıyla çekerek birkaç dakika içinde profesyonel bir dijital QR menüye dönüştüren, tamamen mobil yönetilen, abonelik tabanlı SaaS.
|
||
|
||
### Ana Değer Önerisi
|
||
|
||
> Menünün fotoğrafını çek. AI ile dijitalleştir. Tasarımını seç. QR kodunu yayınla.
|
||
|
||
### Temel Akış
|
||
|
||
Restoran sahibi
|
||
↓
|
||
Mobil uygulama
|
||
↓
|
||
Menü fotoğrafı çek / yükle
|
||
↓
|
||
AI menüyü analiz eder
|
||
↓
|
||
Ürünler + kategoriler + fiyatlar
|
||
↓
|
||
Restoran sonucu kontrol eder
|
||
↓
|
||
Template seçer
|
||
↓
|
||
Menü yayınlanır
|
||
↓
|
||
Otomatik subdomain
|
||
↓
|
||
QR kod
|
||
↓
|
||
Müşteri mobil web menüsünü açar
|
||
|
||
---
|
||
|
||
# 2. Ürün Felsefesi
|
||
|
||
## Mobile-only yönetim
|
||
|
||
Restoran sahibi için web admin paneli bulunmayacak.
|
||
|
||
### Mobil uygulama
|
||
|
||
Tüm yönetim işlemleri:
|
||
|
||
- Restoran bilgileri
|
||
- Menü
|
||
- Ürünler
|
||
- Kategoriler
|
||
- AI import
|
||
- Tasarım
|
||
- QR
|
||
- Domain
|
||
- Analytics
|
||
- Abonelik
|
||
- Hesap
|
||
- Bildirimler
|
||
|
||
mobil uygulamadan yapılacak.
|
||
|
||
### Web
|
||
|
||
Web yalnızca müşterinin menüyü görüntülediği public katman olacak.
|
||
|
||
```text
|
||
MOBILE APP
|
||
↓
|
||
RESTORAN YÖNETİMİ
|
||
|
||
PUBLIC WEB
|
||
↓
|
||
MÜŞTERİ MENÜSÜ
|
||
|
||
|
||
Admin web paneli V1 kapsamında yoktur.
|
||
3. Kullanıcı Tipleri
|
||
3.1 Restaurant Owner
|
||
Sistemin ana kullanıcısıdır.
|
||
Yapabilecekleri:
|
||
Hesap oluşturma
|
||
Restoran oluşturma
|
||
Menü oluşturma
|
||
Menü fotoğrafı yükleme
|
||
AI ile menü çıkarma
|
||
Ürün düzenleme
|
||
Kategori yönetimi
|
||
Tasarım seçme
|
||
Menü yayınlama
|
||
QR oluşturma
|
||
Domain bağlama
|
||
Analytics görüntüleme
|
||
Abonelik yönetme
|
||
3.2 Customer
|
||
Müşteri hesap oluşturmaz.
|
||
Yapabilecekleri:
|
||
QR okutma
|
||
Menü görüntüleme
|
||
Kategoriler arasında gezinme
|
||
Ürün detaylarını görüntüleme
|
||
Dil değiştirme
|
||
4. Onboarding
|
||
Onboarding mümkün olduğunca kısa tutulmalıdır.
|
||
Hedef:
|
||
Kullanıcının kayıt olduktan sonra ilk menüsünü yaklaşık 2–3 dakika içerisinde yayınlaması.
|
||
Step 1 — Restoran
|
||
Alanlar:
|
||
Restoran adı
|
||
Logo
|
||
Opsiyonel telefon
|
||
Opsiyonel adres
|
||
Step 2 — Menü Ekleme
|
||
Seçenekler:
|
||
Fotoğraf çek
|
||
Galeriden seç
|
||
Manuel oluştur
|
||
Ana CTA:
|
||
Menü Fotoğrafı Çek
|
||
Step 3 — AI Analizi
|
||
Durum ekranı:
|
||
|
||
Menünüz analiz ediliyor...
|
||
|
||
✓ Fotoğraf okunuyor
|
||
✓ Kategoriler bulunuyor
|
||
✓ Ürünler bulunuyor
|
||
✓ Fiyatlar algılanıyor
|
||
✓ Menü düzenleniyor
|
||
|
||
Step 4 — AI Review
|
||
Örnek:
|
||
|
||
34 ürün bulundu
|
||
|
||
Çorbalar
|
||
✓ Mercimek Çorbası — 120 TL
|
||
✓ Ezogelin Çorbası — 130 TL
|
||
|
||
Kebaplar
|
||
✓ Adana Kebap — 320 TL
|
||
✓ Urfa Kebap — 320 TL
|
||
|
||
[ Menüyü İncele ]
|
||
|
||
AI sonucu hiçbir zaman doğrudan yayınlanmamalıdır.
|
||
Kullanıcı sonucu kontrol edip değiştirebilmelidir.
|
||
Step 5 — Template
|
||
Örnek temalar:
|
||
Elegant
|
||
Modern
|
||
Minimal
|
||
Dark
|
||
Classic
|
||
Step 6 — Yayın
|
||
|
||
Menünüz hazır 🎉
|
||
|
||
kebapci-ahmet.example.com
|
||
|
||
[ Menüyü Gör ]
|
||
[ QR Kodunu Al ]
|
||
|
||
5. AI Menu Scanner
|
||
Ürünün temel farklılaştırıcı özelliğidir.
|
||
Girdi
|
||
V1:
|
||
JPEG
|
||
PNG
|
||
HEIC
|
||
Birden fazla fotoğraf
|
||
V2:
|
||
PDF
|
||
Daha gelişmiş doküman import
|
||
Çok sayfalı menü
|
||
Çıktı
|
||
|
||
|
||
Category
|
||
├── name
|
||
├── description
|
||
└── items
|
||
├── name
|
||
├── description
|
||
├── price
|
||
└── confidence
|
||
|
||
|
||
Confidence
|
||
Her AI çıktısı güven skoru taşıyabilir.
|
||
Örnek:
|
||
|
||
Mercimek Çorbası
|
||
120 TL
|
||
Confidence: 98%
|
||
Düşük güven durumunda:
|
||
⚠ Fiyatı kontrol edin
|
||
gösterilebilir.
|
||
AI Import Kaydı
|
||
Her import işlemi kayıt altına alınmalıdır.
|
||
ai_import
|
||
├── source_image
|
||
├── status
|
||
├── model
|
||
├── raw_response
|
||
├── processed_at
|
||
└── error
|
||
Bu yapı hata analizi ve ileride model değişimi için önemlidir.
|
||
6. Menü Yönetimi
|
||
Menü
|
||
Restoranın yayınlanan dijital menüsüdür.
|
||
Kategori
|
||
Örnek:
|
||
Çorbalar
|
||
Başlangıçlar
|
||
Kebaplar
|
||
Pizzalar
|
||
Tatlılar
|
||
İçecekler
|
||
Ürün
|
||
Alanlar:
|
||
Ad
|
||
Açıklama
|
||
Fiyat
|
||
Görsel
|
||
Sıra
|
||
Aktif/pasif
|
||
Kategori
|
||
Ürün Opsiyonları
|
||
Basit seçenek sistemi V1'de desteklenebilir.
|
||
Örnek:
|
||
|
||
Adana Kebap
|
||
|
||
Porsiyon
|
||
○ Yarım
|
||
○ Tam
|
||
|
||
Ekstra
|
||
☐ Kaşar +50 TL
|
||
☐ Acı biber +20 TL
|
||
Bu özellik V1'de yalnızca müşteriye bilgi göstermek içindir. Online sipariş sistemi değildir.
|
||
7. Menü Editörü
|
||
Mobil kullanım için optimize edilmelidir.
|
||
Örnek yapı:
|
||
|
||
Menüm
|
||
|
||
Çorbalar
|
||
Mercimek
|
||
Ezogelin
|
||
|
||
Kebaplar
|
||
Adana
|
||
Urfa
|
||
|
||
Tatlılar
|
||
Künefe
|
||
Desteklenen işlemler:
|
||
Ürün ekle
|
||
Ürün düzenle
|
||
Ürün sil
|
||
Ürün sıralama
|
||
Kategori ekle
|
||
Kategori düzenle
|
||
Kategori sıralama
|
||
Ürün gizleme
|
||
Kategori gizleme
|
||
Drag & drop mümkünse kullanılmalıdır.
|
||
8. Theme / Template Engine
|
||
Template sistemi veri ile sunum katmanını birbirinden ayırmalıdır.
|
||
Menu Data
|
||
↓
|
||
Theme Engine
|
||
↓
|
||
Public Menu
|
||
Örnek tema konfigürasyonu:
|
||
{
|
||
"theme": "premium-dark",
|
||
"primaryColor": "#C8A96B",
|
||
"background": "#111111",
|
||
"productLayout": "card",
|
||
"categoryLayout": "accordion"
|
||
}
|
||
Tema değiştirildiğinde
|
||
Menü verisi değişmez.
|
||
Sadece presentation layer değişir.
|
||
|
||
Bu mimari ileride yeni template eklemeyi kolaylaştırır.
|
||
|
||
9. Public Menu
|
||
Müşteri QR kodu okuttuğunda hızlı açılan mobil web menüsü görüntülenir.
|
||
Örnek:
|
||
|
||
https://kebapci-ahmet.example.com
|
||
Özellikler:
|
||
Mobile-first
|
||
Çok hızlı açılış
|
||
Responsive
|
||
Kategori navigasyonu
|
||
Ürün detayları
|
||
Görseller
|
||
Dil desteği
|
||
Restoran logosu
|
||
Tema
|
||
Basic SEO metadata
|
||
Performans
|
||
Public menü kritik olduğu için:
|
||
Next.js
|
||
Cloudflare
|
||
CDN
|
||
Cache
|
||
Optimized images
|
||
kullanılmalıdır.
|
||
Menü verisi değişmediği sürece agresif cache uygulanabilir.
|
||
|
||
10. Otomatik Domain
|
||
Restoran oluşturulduğunda otomatik subdomain atanır.
|
||
Örnek:
|
||
|
||
kebapci-ahmet.example.com
|
||
Slug kuralları:
|
||
lowercase
|
||
Türkçe karakterlerin normalize edilmesi
|
||
boşlukların - olması
|
||
benzersiz olması
|
||
güvenli karakter seti
|
||
11. Custom Domain
|
||
Restoran kendi domainini bağlayabilir.
|
||
Örnek:
|
||
|
||
menu.kebapciahmet.com
|
||
Mobil uygulama:
|
||
Ayarlar
|
||
→ Domain
|
||
→ Kendi domainimi kullan
|
||
DNS yönlendirme talimatı gösterilir.
|
||
Örneğin:
|
||
|
||
Type: CNAME
|
||
Name: menu
|
||
Target: domains.example.com
|
||
Domain doğrulandıktan sonra public menü custom domain üzerinden açılır.
|
||
Cloudflare bu katmanda kullanılmalıdır.
|
||
|
||
12. QR Kod
|
||
QR kod dinamik URL mantığıyla çalışmalıdır.
|
||
QR içindeki adresin doğrudan restoran verisine bağımlı olmaması önerilir.
|
||
|
||
QR özellikleri:
|
||
|
||
PNG
|
||
SVG
|
||
Paylaş
|
||
Kaydet
|
||
Yazdırma için yüksek çözünürlük
|
||
QR kod menü güncellendiğinde değişmemelidir.
|
||
Domain değişikliklerinde QR'ın bozulmaması gerekir.
|
||
|
||
13. Çoklu Dil
|
||
V1'de temel dil desteği bulunmalıdır.
|
||
Restoran menü için:
|
||
|
||
Türkçe
|
||
İngilizce
|
||
Almanca
|
||
Arapça
|
||
gibi diller ekleyebilir.
|
||
AI çeviri ilerleyen aşamada desteklenebilir.
|
||
|
||
Örnek:
|
||
|
||
Adana Kebap
|
||
↓
|
||
Adana Kebab
|
||
Çeviri her zaman restoran tarafından düzenlenebilir/onaylanabilir.
|
||
14. Abonelik Sistemi
|
||
Ödeme ve abonelik yönetimi:
|
||
RevenueCat
|
||
|
||
üzerinden yapılacaktır.
|
||
|
||
Abonelikler
|
||
İlk sürümde tek ücretli paket önerilir:
|
||
Pro
|
||
Aylık
|
||
Yıllık
|
||
Örnek product ID yapısı:
|
||
menu_pro_monthly
|
||
menu_pro_yearly
|
||
RevenueCat entitlement:
|
||
pro
|
||
Free Trial
|
||
Örneğin:
|
||
7 gün ücretsiz deneme
|
||
|
||
Deneme süresi sonrasında aktif abonelik gerekir.
|
||
|
||
Fiyatlandırma pazara göre ayrıca belirlenmelidir.
|
||
|
||
15. Subscription Lifecycle
|
||
Abonelik durumu:
|
||
ACTIVE
|
||
↓
|
||
GRACE PERIOD
|
||
↓
|
||
SUSPENDED
|
||
↓
|
||
DELETED
|
||
Abonelik sona erdiğinde restoran verisi hemen silinmemelidir.
|
||
Önerilen davranış:
|
||
|
||
Menü verisi korunur
|
||
Restoran hesabı korunur
|
||
Public menü geçici olarak kapatılabilir
|
||
Yeniden ödeme yapıldığında menü tekrar aktifleşir
|
||
Veri silme politikası ayrıca belirlenmelidir.
|
||
16. RevenueCat Güvenlik Yaklaşımı
|
||
Mobil uygulamanın local state'i abonelik için güvenilir kaynak kabul edilmemelidir.
|
||
Backend:
|
||
|
||
RevenueCat entitlement
|
||
webhook
|
||
subscription status
|
||
üzerinden aboneliği doğrulamalıdır.
|
||
Örnek:
|
||
|
||
Mobile App
|
||
↓
|
||
RevenueCat
|
||
↓
|
||
Webhook
|
||
↓
|
||
Backend
|
||
↓
|
||
Subscription Status
|
||
17. Analytics
|
||
V1'de temel restoran analytics'i bulunmalıdır.
|
||
Örnek:
|
||
|
||
Bugün
|
||
84 görüntüleme
|
||
|
||
Bu hafta
|
||
532 görüntüleme
|
||
|
||
Bu ay
|
||
2.341 görüntüleme
|
||
İleride:
|
||
En çok görüntülenen ürünler
|
||
En çok görüntülenen kategoriler
|
||
Saatlik yoğunluk
|
||
Dil kullanımı
|
||
QR taramaları
|
||
eklenebilir.
|
||
Analytics ayrımı
|
||
Ürün kullanım analitiği:
|
||
PostHog
|
||
|
||
Restoran menü analitiği:
|
||
|
||
Uygulamanın kendi analytics sistemi
|
||
|
||
olarak ayrılabilir.
|
||
|
||
18. Push Notifications
|
||
Mobil uygulama olduğu için push notification sistemi kullanılabilir.
|
||
Örnek:
|
||
|
||
Menünüz 30 gündür güncellenmedi.
|
||
|
||
Aboneliğiniz 3 gün sonra yenilenecek.
|
||
|
||
Menünüz bugün 250 kez görüntülendi.
|
||
Bildirimler kullanıcı tarafından kapatılabilir.
|
||
19. Hesap / Authentication
|
||
Önerilen:
|
||
Email
|
||
Apple
|
||
Google
|
||
Giriş.
|
||
Mobil uygulamada şifre yönetimi mümkün olduğunca azaltılmalıdır.
|
||
|
||
20. Ayarlar
|
||
Mobil ayarlar:
|
||
Hesabım
|
||
Restoran Bilgileri
|
||
Şubeler
|
||
Menü
|
||
Tasarım
|
||
Domain
|
||
QR Kod
|
||
Diller
|
||
Bildirimler
|
||
Abonelik
|
||
Faturalandırma
|
||
Destek
|
||
Çıkış
|
||
21. Şube Mimarisi
|
||
V1'de kullanıcı deneyimi:
|
||
1 User
|
||
↓
|
||
1 Restaurant
|
||
↓
|
||
1 Location
|
||
olabilir.
|
||
Ancak DB baştan:
|
||
|
||
User
|
||
↓
|
||
Restaurant
|
||
↓
|
||
Location
|
||
şeklinde tasarlanmalıdır.
|
||
İleride:
|
||
|
||
Restaurant
|
||
├── Location 1
|
||
├── Location 2
|
||
├── Location 3
|
||
└── Location 4
|
||
desteklenebilir.
|
||
22. Veritabanı
|
||
Production için:
|
||
Supabase Cloud
|
||
|
||
önerilir.
|
||
|
||
Supabase'in sağladıkları:
|
||
|
||
PostgreSQL
|
||
Auth
|
||
Storage
|
||
RLS
|
||
Realtime gerektiğinde
|
||
Yönetim paneli
|
||
Local development:
|
||
Local Supabase
|
||
|
||
Production:
|
||
|
||
Supabase Cloud
|
||
|
||
Temel tablolar
|
||
users
|
||
|
||
restaurants
|
||
restaurant_members
|
||
locations
|
||
|
||
menus
|
||
menu_categories
|
||
menu_items
|
||
menu_item_options
|
||
|
||
themes
|
||
restaurant_themes
|
||
|
||
domains
|
||
qr_codes
|
||
|
||
ai_imports
|
||
ai_import_items
|
||
|
||
subscriptions
|
||
|
||
analytics_events
|
||
|
||
media
|
||
23. Backend Mimarisi
|
||
Business logic doğrudan mobil uygulamaya veya Supabase client'a bırakılmamalıdır.
|
||
Kendi API katmanı:
|
||
|
||
Node.js
|
||
|
||
Örnek endpointler:
|
||
|
||
POST /restaurants
|
||
GET /restaurants/:id
|
||
PATCH /restaurants/:id
|
||
|
||
POST /menus
|
||
GET /menus/:id
|
||
PATCH /menus/:id
|
||
POST /menus/:id/publish
|
||
|
||
POST /menus/import
|
||
GET /ai-imports/:id
|
||
|
||
POST /domains
|
||
POST /domains/verify
|
||
|
||
GET /analytics
|
||
|
||
POST /subscription/webhook
|
||
Bu sayede ileride Supabase değişse bile ana business logic korunabilir.
|
||
24. Production Altyapısı
|
||
Coolify
|
||
Coolify üzerinde:
|
||
API
|
||
Public Menu
|
||
Worker
|
||
Redis
|
||
Cron / Background Jobs
|
||
Monitoring
|
||
çalışabilir.
|
||
Supabase Cloud
|
||
PostgreSQL
|
||
Storage
|
||
Auth
|
||
Cloudflare
|
||
DNS
|
||
SSL
|
||
CDN
|
||
Caching
|
||
Custom Domains
|
||
WAF
|
||
RevenueCat
|
||
Apple subscriptions
|
||
Google Play subscriptions
|
||
Entitlements
|
||
Subscription lifecycle
|
||
25. Önerilen Production Mimarisi
|
||
INTERNET
|
||
│
|
||
CLOUDFLARE
|
||
│
|
||
┌────────────┴────────────┐
|
||
│ │
|
||
PUBLIC MENU API
|
||
Next.js Node.js
|
||
│ │
|
||
│ ┌──────┴──────┐
|
||
│ │ │
|
||
│ SUPABASE REVENUECAT
|
||
│ CLOUD
|
||
│ │
|
||
│ ┌───────┴───────┐
|
||
│ │ │
|
||
│ PostgreSQL Storage
|
||
│
|
||
└──────────────────────────────
|
||
Coolify:
|
||
Coolify
|
||
├── Next.js Public Menu
|
||
├── Node.js API
|
||
├── Worker
|
||
├── Redis
|
||
└── Cron
|
||
26. V1 Scope
|
||
Restaurant Mobile App
|
||
Auth
|
||
Register
|
||
Login
|
||
Apple
|
||
Google
|
||
Restaurant
|
||
Create
|
||
Edit
|
||
Logo
|
||
Basic information
|
||
AI
|
||
Camera
|
||
Gallery
|
||
Upload
|
||
AI extraction
|
||
Confidence
|
||
Review
|
||
Edit result
|
||
Menu
|
||
Categories
|
||
Products
|
||
Prices
|
||
Descriptions
|
||
Images
|
||
Ordering
|
||
Active/inactive
|
||
Design
|
||
5 initial templates
|
||
Logo
|
||
Colors
|
||
Preview
|
||
Publishing
|
||
Publish/unpublish
|
||
Automatic subdomain
|
||
QR
|
||
Generate
|
||
PNG
|
||
SVG
|
||
Share
|
||
Domain
|
||
Automatic subdomain
|
||
Custom domain
|
||
Subscription
|
||
Free trial
|
||
Monthly
|
||
Yearly
|
||
RevenueCat
|
||
Entitlement
|
||
Webhook
|
||
Analytics
|
||
Menu views
|
||
QR scans
|
||
Public Web
|
||
Mobile-first
|
||
Categories
|
||
Products
|
||
Images
|
||
Themes
|
||
Languages
|
||
Basic SEO
|
||
Fast loading
|
||
27. V1 Dışında Tutulacak Özellikler
|
||
Aşağıdakiler V1 scope'una dahil değildir:
|
||
Online ordering
|
||
Online payment
|
||
Garson çağırma
|
||
Masa yönetimi
|
||
POS entegrasyonu
|
||
Rezervasyon
|
||
Loyalty
|
||
Kampanya yönetimi
|
||
Stok
|
||
Kasa
|
||
Garson uygulaması
|
||
Kitchen Display
|
||
WhatsApp sipariş
|
||
Bunlar gelecekte ürün ailesinin parçaları olabilir.
|
||
28. Gelecek Ürün Yol Haritası
|
||
QR MENU
|
||
│
|
||
├── Online Ordering
|
||
├── Table Ordering
|
||
├── Waiter Call
|
||
├── Kitchen Display
|
||
├── Reservation
|
||
├── Loyalty
|
||
├── Campaigns
|
||
├── Reviews
|
||
└── POS Integration
|
||
Ancak ilk ürünün odağı:
|
||
En hızlı ve en kolay dijital menü oluşturma deneyimi.
|
||
olmalıdır.
|
||
29. Ana KPI
|
||
En önemli KPI:
|
||
Kayıt olan restoranın ilk menüsünü yayınlama oranı.
|
||
Örnek funnel:
|
||
100 kayıt
|
||
↓
|
||
80 restoran oluşturdu
|
||
↓
|
||
70 fotoğraf yükledi
|
||
↓
|
||
65 AI import tamamladı
|
||
↓
|
||
60 menüyü onayladı
|
||
↓
|
||
55 template seçti
|
||
↓
|
||
50 QR oluşturdu
|
||
↓
|
||
40 ödeme yaptı
|
||
Özellikle şu aşamalar takip edilmelidir:
|
||
Signup → Restaurant created
|
||
Restaurant → Photo uploaded
|
||
Photo → AI completed
|
||
AI → Menu approved
|
||
Menu → Published
|
||
Published → QR generated
|
||
Trial → Paid
|
||
Monthly → Yearly
|
||
Churn
|
||
30. Başarı Kriterleri
|
||
V1 başarılı kabul edilir eğer:
|
||
Restoran sahibi yalnızca mobil uygulama kullanarak hesap açabiliyorsa.
|
||
Fiziksel menüsünün fotoğrafını çekebiliyorsa.
|
||
AI menüyü otomatik olarak dijital veriye dönüştürebiliyorsa.
|
||
AI sonucunu kolayca düzeltebiliyorsa.
|
||
Hazır template seçebiliyorsa.
|
||
Menüyü yayınlayabiliyorsa.
|
||
Otomatik bir subdomain alabiliyorsa.
|
||
QR kodunu oluşturup paylaşabiliyorsa.
|
||
Kendi domainini bağlayabiliyorsa.
|
||
Aylık veya yıllık abonelik satın alabiliyorsa.
|
||
Abonelik durumu backend tarafından güvenli şekilde doğrulanıyorsa.
|
||
Müşteri QR kodundan hızlı ve mobil uyumlu menüye ulaşabiliyorsa.
|
||
Restoran sahibi temel görüntülenme istatistiklerini görebiliyorsa.
|
||
31. Ürün Prensipleri
|
||
1. Mobile First değil, Mobile Only
|
||
Restoran yönetimi mobil uygulamadan yapılır.
|
||
2. AI yardımcıdır, karar verici değildir
|
||
Her AI çıktısı düzenlenebilir ve doğrulanabilir.
|
||
3. QR kalıcıdır
|
||
Menü güncellenirken QR değişmez.
|
||
4. Public menu hızlıdır
|
||
Müşteri uygulama indirmez, hesap açmaz.
|
||
5. Basitlik
|
||
Restoran sahibi teknik bilgiye ihtiyaç duymamalıdır.
|
||
6. Subscription-first
|
||
Ürün abonelik modeli üzerine tasarlanır.
|
||
7. API-first business logic
|
||
Business logic kendi backend katmanında tutulur.
|
||
8. Database bağımlılığı azaltılır
|
||
Supabase kullanılır ancak uygulamanın tamamı Supabase'e bağımlı tasarlanmaz.
|
||
32. Sonraki PRD Aşamaları
|
||
Bu temel PRD'den sonra aşağıdaki dokümanlar hazırlanmalıdır:
|
||
Mobile UX / Screen Flow
|
||
Bütün mobil ekranlar
|
||
Navigation
|
||
Onboarding
|
||
Empty states
|
||
Error states
|
||
Database Schema
|
||
Tüm tablolar
|
||
Kolonlar
|
||
Foreign keys
|
||
Indexler
|
||
RLS
|
||
API Specification
|
||
Endpointler
|
||
Request/response
|
||
Authentication
|
||
Authorization
|
||
Error handling
|
||
AI Pipeline
|
||
Image preprocessing
|
||
OCR / Vision
|
||
Structured extraction
|
||
Validation
|
||
Confidence
|
||
Retry
|
||
Human review
|
||
Theme Engine Specification
|
||
Component yapısı
|
||
Theme schema
|
||
Template rendering
|
||
Preview
|
||
Customization
|
||
Domain Architecture
|
||
Wildcard domain
|
||
Custom domain
|
||
DNS verification
|
||
SSL
|
||
Cloudflare
|
||
RevenueCat Specification
|
||
Products
|
||
Entitlements
|
||
Trial
|
||
Monthly
|
||
Yearly
|
||
Webhooks
|
||
Grace period
|
||
Cancellation
|
||
Refund
|
||
Coolify Deployment
|
||
Containers
|
||
Environment variables
|
||
Secrets
|
||
CI/CD
|
||
Backup
|
||
Monitoring
|
||
MVP Development Roadmap
|
||
Sprint planı
|
||
Öncelikler
|
||
Bağımlılıklar
|
||
Release planı
|
||
33. Önerilen İlk Teknik Kararlar
|
||
Alan Karar
|
||
Mobile Expo / React Native
|
||
Public Web Next.js
|
||
Backend Node.js
|
||
Database Supabase PostgreSQL
|
||
Storage Supabase Storage
|
||
Auth Supabase Auth
|
||
Local Development Local Supabase
|
||
Production DB Supabase Cloud
|
||
Hosting Coolify
|
||
CDN / DNS Cloudflare
|
||
Payments RevenueCat
|
||
Analytics PostHog + custom analytics
|
||
Cache / Queue Redis
|
||
AI Vision/LLM tabanlı menu extraction
|
||
QR Dynamic QR
|
||
Domain Cloudflare
|
||
Admin Web Yok
|
||
Restaurant Management Mobile only
|
||
34. MVP'nin Tek Cümlelik Tanımı
|
||
Restoran sahibi telefonuyla menüsünün fotoğrafını çeker, AI menüyü dijitalleştirir, restoran sahibi tasarımını seçer ve birkaç dakika içinde kendi QR menüsünü yayınlar.
|
||
|
||
Bu PRD'yi **V0.1 temel ürün dokümanı** olarak kabul edebiliriz. Bir sonraki aşamada özellikle **mobil ekranları tek tek çıkarmak** çok daha değerli olacak; çünkü bu ürünün bütün başarısı restoran sahibinin “fotoğraf çek → AI → düzelt → tema → yayınla” akışının ne kadar sürtünmesiz olduğuna bağlı.
|
||
şeyi hiç tartışmadık. menü webde gözükecek değil mi mobile responsive şeklinde
|
||
Evet, kesinlikle webde gözükecek. Hatta bence mimarinin en önemli parçalarından biri bu.
|
||
Burada ayrım şu:
|
||
|
||
📱 Restoran yönetimi → Mobile App
|
||
Restoran sahibi:
|
||
Menü oluşturur
|
||
Fotoğraf çeker
|
||
AI import yapar
|
||
Ürünleri düzenler
|
||
Template seçer
|
||
QR oluşturur
|
||
Domain bağlar
|
||
Abonelik yönetir
|
||
Bunların tamamı mobil uygulamada.
|
||
🌐 Müşterinin menüsü → Web
|
||
Müşteri QR'ı telefon kamerasıyla okutur ve tarayıcıda web menüsü açılır.
|
||
Örneğin:
|
||
|
||
menu.restoranadi.com
|
||
|
||
veya:
|
||
|
||
restoranadi.seninmarkan.com
|
||
|
||
Uygulama indirmesi kesinlikle gerekmiyor.
|
||
|
||
Public menu nasıl olacak?
|
||
Tamamen mobile responsive web.
|
||
Örneğin telefonda:
|
||
|
||
┌─────────────────────────┐
|
||
│ LOGO │
|
||
│ KEBAPÇI AHMET │
|
||
│ │
|
||
│ [ TR ] [ EN ] [ AR ] │
|
||
│ │
|
||
│ ─────────────────────── │
|
||
│ │
|
||
│ ÇORBALAR │
|
||
│ │
|
||
│ Mercimek Çorbası │
|
||
│ Geleneksel ev yapımı │
|
||
│ 120₺ │
|
||
│ │
|
||
│ Ezogelin Çorbası │
|
||
│ 130₺ │
|
||
│ │
|
||
│ KEBAPLAR │
|
||
│ │
|
||
│ Adana Kebap │
|
||
│ Zırhta çekilmiş │
|
||
│ 320₺ │
|
||
│ │
|
||
└─────────────────────────┘
|
||
Ama sadece mobil değil.
|
||
Tablet:
|
||
|
||
┌────────────────────────────────────┐
|
||
│ KEBAPÇI AHMET │
|
||
│ │
|
||
│ Çorbalar Kebaplar Tatlı │
|
||
│ │
|
||
│ Mercimek Adana Künefe│
|
||
│ 120₺ 320₺ 180₺ │
|
||
└────────────────────────────────────┘
|
||
Desktop'ta da düzgün görünür.
|
||
Hatta template sistemi burada devreye giriyor
|
||
Restoran uygulamadan:
|
||
Elegant
|
||
|
||
seçerse:
|
||
|
||
PUBLIC WEB
|
||
↓
|
||
Elegant Theme
|
||
Dark
|
||
seçerse:
|
||
|
||
PUBLIC WEB
|
||
↓
|
||
Dark Theme
|
||
olacak.
|
||
Yani:
|
||
|
||
MENU DATA
|
||
│
|
||
▼
|
||
THEME ENGINE
|
||
│
|
||
┌─────────┼─────────┐
|
||
▼ ▼ ▼
|
||
Elegant Modern Dark
|
||
│ │ │
|
||
└─────────┼─────────┘
|
||
▼
|
||
PUBLIC WEBSITE
|
||
Bu yüzden restoran uygulamasında template preview da yapabiliriz.
|
||
Ve bence çok önemli bir karar daha
|
||
Public menu Next.js olacak.
|
||
Ama restoranın müşterisi bunu klasik "web sitesi" gibi hissetmemeli.
|
||
|
||
Örneğin:
|
||
|
||
menu.ahmetkebap.com
|
||
|
||
açıldığında:
|
||
|
||
Çok hızlı
|
||
App-like
|
||
Mobil optimize
|
||
Büyük dokunma alanları
|
||
Sticky kategori navigation
|
||
Smooth scrolling
|
||
Ürün modal/detail
|
||
Lazy loaded images
|
||
PWA opsiyonel
|
||
olabilir.
|
||
QR deneyimi:
|
||
Müşteri
|
||
↓
|
||
Telefon kamerası
|
||
↓
|
||
QR
|
||
↓
|
||
Safari / Chrome
|
||
↓
|
||
menu.ahmetkebap.com
|
||
↓
|
||
Menü
|
||
App Store'a gitmez. Login istemez.
|
||
Bu bence ürünün en önemli UX avantajlarından biri.
|
||
|
||
Bir de SEO tarafı var
|
||
Public menü web olduğu için ileride:
|
||
"İzmir'de X restoran"
|
||
gibi aramalardan da trafik alma ihtimali var.
|
||
Örneğin:
|
||
|
||
menu.restoran.com
|
||
sayfasında:
|
||
Restaurant name
|
||
Address
|
||
Phone
|
||
Opening hours
|
||
Menu
|
||
Structured data / Restaurant schema
|
||
gibi bilgiler olabilir.
|
||
Ama bunu V1'de SEO ürünü haline getirmeyiz. Altyapıyı SEO'ya uygun kurarız.
|
||
|
||
Dolayısıyla mimariyi şöyle netleştirelim:
|
||
┌─────────────────┐
|
||
│ RESTAURANT │
|
||
│ MOBILE APP │
|
||
│ Expo │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
Node.js API
|
||
│
|
||
┌──────────────┼──────────────┐
|
||
▼ ▼ ▼
|
||
Supabase AI Service RevenueCat
|
||
PostgreSQL
|
||
Storage
|
||
│
|
||
▼
|
||
┌───────────────┐
|
||
│ PUBLIC MENU │
|
||
│ Next.js │
|
||
└───────┬───────┘
|
||
│
|
||
Cloudflare CDN
|
||
│
|
||
▼
|
||
menu.restoran.com
|
||
│
|
||
▼
|
||
MÜŞTERİ
|
||
Yani evet: web menü ürünün kendisinin ana yüzlerinden biri. Sadece yönetim tarafını mobile-only yapıyoruz. Bu ayrımı PRD'de özellikle korumak lazım. |