# PRD — PerdeSahne: Tiyatro Oyunu Portalı / Bilet Satış Sistemi

## Orijinal Problem Tanımı
Tiyatro Oyunu Portalı / Bilet Satış ve Yönetim Sistemi (Türkçe). Ana sayfa (hero, öne çıkan oyunlar, etkinlik takvimi, istatistikler, haberler, e-bülten), Oyunlar sayfası (kart/liste görünüm, tür/tarih/salon/yaş filtreleri, oyun detayı), Etkinlik Takvimi (aylık görünüm, salon filtresi), Bilet Sistemi (kategori seçimi, indirim kodu, ödeme, QR kodlu dijital bilet), Oyuncular ve Ekip, Blog/Haberler, Galeri, Hakkımızda, İletişim.

## Kullanıcı Tercihleri
- Ödeme: Stripe gerçek test ödemesi (emergentintegrations, sk_test_emergent)
- Admin paneli: YOK (sadece seyirci tarafı)
- Auth: YOK — üyeliksiz bilet alma (ad + e-posta)
- Koltuk: Kategori bazlı (VIP / Normal / Balkon), koltuk haritası yok
- Tasarım: Varsayılan (design_agent: koyu/sinematik, Cormorant Garamond + Outfit, altın #D4AF37)

## Mimari
- Backend: FastAPI + MongoDB (motor), /api prefix, port 8001 (supervisor)
- Frontend: React 19 + Tailwind + shadcn, sayfalar: /, /oyunlar, /oyun/:id, /takvim, /ekip, /haberler, /haber/:id, /galeri, /hakkimizda, /iletisim, /bilet/basarili
- Stripe: emergentintegrations StripeCheckout; checkout session → payment_transactions (pending) → success sayfası polling (/api/checkout/status) → idempotent issue_ticket → QR kodlu bilet (qrcode lib, base64 PNG)
- İndirim kodları (backend sabit): TIYATRO10 (%10), PERDE20 (%20)
- Fiyatlar yalnızca backend'de tanımlı (frontend'den tutar kabul edilmez)
- Seed: startup'ta 10 oyun, 11 ekip üyesi, 8 haber, 12 galeri öğesi; gösterim tarihleri seed anına göre dinamik (+1..+30 gün)

## Tamamlananlar (2026-06-10, MVP)
- 9 sayfa + dijital bilet sayfası, tam Türkçe içerik
- Oyun filtreleri (tür/salon/yaş/arama), kart-liste görünüm geçişi
- Aylık etkinlik takvimi (ay gezinme, salon filtresi, yaklaşan etkinlikler)
- Bilet akışı: gösterim → kategori → adet → ad/e-posta → indirim kodu → Stripe → QR'lı dijital bilet (yazdır/PDF)
- İletişim formu, e-bülten kaydı, istatistik sayaçları
- Test: backend 27/27, frontend tüm akışlar geçti (iteration_1.json)

## Backlog / Sonraki Adımlar
- P1: Bilet e-posta gönderimi (Resend/SendGrid entegrasyonu gerekir)
- P1: Admin paneli (oyun/seans CRUD, bilet raporları)
- P2: Fragman/video galerisi (YouTube embed), Instagram akışı
- P2: Tarih bazlı oyun filtresi, haftalık takvim görünümü
- P2: Koltuk haritası (ileride istenirse)
- P2: Contact/newsletter için EmailStr doğrulaması

## Notlar
- Auth yok → test_credentials gerekmiyor
- Stripe canlı ödeme tarayıcıda 4242 4242 4242 4242 test kartıyla tamamlanabilir
