Çok kiracılı (multi-tenant), **offline-first** kafe/restoran POS + yönetim sistemi. Monorepo: `apps/web` (React PWA), `apps/api` (NestJS), `packages/shared` (ortak tip + zod + maliyet çekirdeği).
%0 uygulama ilerlemesi
Diller
TypeScript, Dockerfile, JavaScript, HTML, CSS
Notlar
Mimari detayları düzenle
Ana dil
TypeScript
Y4 (3/3): siparis boy/opsiyon secim diyalogu
Y4 (3/3): siparis boy/opsiyon secim diyalogu - Urun kutusu ana fiyattan ekler; kosedeki ... boy+opsiyon diyalogunu acar - Diyalog: boy (standart/varyant) + opsiyon gruplari (tekli/coklu) + canli fiyat - Ana fiyattan da eklenebilir (onceki: sadece boy fiyati) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Y4 (2/3): menu opsiyon yonetimi UI
Y4 (2/3): menu opsiyon yonetimi UI - Opsiyon/Ekstra Gruplari yoneticisi: grup + secenek (ad/fiyat), tekli/zorunlu - Urun panelinde "Opsiyonlar" ile gruplari urune bagla Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Y4 (1/3): opsiyon/modifier backend
Y4 (1/3): opsiyon/modifier backend - ModifierGroup/Option/MenuItemModifier semasi + migration - Menu: grup/secenek CRUD, urune grup baglama, fullMenu urun modifierGroups doner - Siparis addItem: modifierOptionIds -> ad+fiyat snapshot (urune bagli gruplardan dogrula) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Y1: kalem bazli bolunmus odeme (adet dusurerek)
Y1: kalem bazli bolunmus odeme (adet dusurerek) - OrderItem.odenenAdet (sema+migration); pay-items endpoint (secilen kalemlerden N adet ode) - Odenen adetler tekrar secilemez; hepsi odenince adisyon otomatik kapanir - Odenmis kalem silinemez/adedi azaltilamaz - Adisyonda kaleme dokun -> adet sec; secim yoksa tumu odenir Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Y2: Isletme ayarlari sekmesi + acilis/kapanis saati
Y2: Isletme ayarlari sekmesi + acilis/kapanis saati - Cafe.acilisSaat/kapanisSaat (sema+migration); /settings (MASTER) get/update - Dashboard is-gunune gore: acilis saatinden itibaren; gece satislari ayni gune - Yeni "Isletme Ayarlari" sekmesi: isletme bilgileri + saatler + kullanicilar (Kullanicilar buraya tasindi) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Y3+Y5: dashboard anlik guncelleme + adisyon panel duzeni
Y3+Y5: dashboard anlik guncelleme + adisyon panel duzeni - Realtime AppShell'e tasindi; her islemde dashboard+rapor invalidate (anlik ciro/grafik) - Adisyon paneli: menu buyuk (flex-1, 2-4 sutun), adisyon dar sabit sutun, panel buyutuldu (max-w-6xl) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UX: add color support for menu categories and items
UX: add color support for menu categories and items
UX-F: stok ozel birim/tur (#7)
UX-F: stok ozel birim/tur (#7) - StockItem.tur enum -> String (guvenli cast migration, veri korunur); ozel turler eklenebilir - Kalemler formunda tur ve birim combobox (datalist): varsayilanlari oner + ozel deger yaz - turLabel/turTone fallback (ozel turler kendi adiyla, notr renk) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UX-E: urun boylari/varyant (#3)
UX-E: urun boylari/varyant (#3) - MenuItemVariant modeli + migration (boy sadece fiyati degistirir, maliyet urun recetesiyle ayni) - Menu: urun ici boy editoru + "N boy" rozeti - Siparis: boy secimi (adisyon menu seciciden), OrderItem ad "Urun (Boy)" snapshot - Public menu: boylar + fiyatlari Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UX-C: raporlar ozel tarih araligi (#9) + sayim siralama (#8)
UX-C: raporlar ozel tarih araligi (#9) + sayim siralama (#8) - Raporlarda "Ozel" secenegi + iki tarih arasi date picker (backend from/to hazir) - Yeni sayimda kalemleri Ture/Miktara/Ada gore siralama secici Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UX-B: sidebar acilir/kapanir + mobil uyumluluk (#5,#6)
UX-B: sidebar acilir/kapanir + mobil uyumluluk (#5,#6) - Mobilde hamburger + kayan drawer + backdrop; masaustunde daralt/ac - Dokunmatik hedefler buyutuldu, mobil ust bar - Sidebar disi tum icerik zaten responsive (grid/overflow-x tablolar) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UX-A: admin geri link, masa yan-yana + isim duzenleme, menu form 70/30 + isim duzenleme
UX-A: admin geri link, masa yan-yana + isim duzenleme, menu form 70/30 + isim duzenleme - Admin login'de "Kafe girisine don" linki (#1) - Masa ekleyince izgara duzeninde yan yana konumlanir, ust uste binmez (#2) - Duzenle modunda masa ismi satir-ici duzenlenebilir (#2.1) - Menu urun ekleme formu isim %70 / fiyat %30 (#4) - Menu urun ismi satir-ici duzenlenebilir (#10) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
M10: Sertlestirme
M10: Sertlestirme - Rate limit (@nestjs/throttler): global 120/dk, login 10/dk (brute-force) - Global exception filter (tek bicim hata, 500'de stack sizmaz) - Maliyet cekirdegi testleri (vitest, 8/8): birim cevrimi + Latte §4 + Ikram kenar durumu - EINVOICE_PROVIDER env notu Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
M7: PWA / offline-first (kismi)
M7: PWA / offline-first (kismi) - vite-plugin-pwa: installable, service worker, app shell cache - API GET'leri NetworkFirst runtime cache (offline'da son veri gorunur) - Cevrimdisi bant gostergesi (useOnline) - NOT: offline siparis-yazma kuyrugu (Dexie) ayrica ele alinacak (mutasyon idempotency) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
M9: e-Adisyon & OKC iskeleti
M9: e-Adisyon & OKC iskeleti - EInvoiceProvider/OkcProvider arayuzleri + Mock + entegrator yer tutucu - Adisyon kapaninca idempotent iletim (orderId unique), kuyruk 60sn'de yeniden dener - Durum takibi (BEKLIYOR/ILETILDI/HATA) + tekrar dene; Raporlar > e-Adisyon sekmesi Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
M8: Raporlar & dashboard (M6 gelir/COGS dahil)
M8: Raporlar & dashboard (M6 gelir/COGS dahil) - Dashboard: KPI'lar, saatlik satis (bar), odeme dagilimi (pie), gunun ozeti icgoruler - Urun karliligi: urun bazli adet/ciro/maliyet/kar/marj + Ciro/COGS/Brut Kar ozeti - Nakit akisi: gelir (Ikram haric) vs gider/COGS, net kar/marj, gider CRUD - Malzeme sarfi: satislardan teorik tuketim + maliyet - Tarih araligi (hafta/ay/yil), CSV export Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
README: M4/M5 tamamlandi olarak isaretle
README: M4/M5 tamamlandi olarak isaretle Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
M5: Siparis & masa haritasi + realtime
M5: Siparis & masa haritasi + realtime - Masa CRUD + surukle-birak konumlandirma, duzenle modu - Adisyon: kalem ekle/adet/sil (birimMaliyet snapshot ekleme aninda), tasima, iptal - Parcali odeme (Kalan/½/⅓/¼, Nakit/Kart/Ikram), bakiye 0'da otomatik kapanis - Socket.io gateway: kafe odasina anlik yayin (tables/orders changed) - 3 gorunum: masa haritasi, aktif, kapatilan Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
M4: Menu & QR & Recete paneli
M4: Menu & QR & Recete paneli - Menu modulu: kategori/urun CRUD, urun ici recete editoru (canli maliyet/kar/marj/food-cost) - Public QR menu (/m/:slug, auth yok), QR kod uretimi, tema/baslik ayarlari - Marj rozeti + "recete yok" gostergesi; fiyat/recete degisince aninda yansir Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Deploy hedefini Railway'den Render'a tasi
Deploy hedefini Railway'den Render'a tasi - render.yaml (Blueprint) eklendi: Docker build + migrate/seed/start - railway.json kaldirildi - DEPLOY.md + README Render'a gore guncellendi Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
first commit
first commit