Selam arkadaşlar,

Restoran/kafeler için ücretsiz ve açık kaynak (MIT) bir QR menü sistemi paylaşıyorum:
https://github.com/trhero/QRMasa

Sadece menü değil; masa/adisyon yönetimi, mutfak ekranı (KDS), kasa (karma ödeme + gün sonu Z raporu), denetim kaydı ve paket servis de var.

ÖNEMLİ
- Bu bir DENEME projesidir, ticari ürün değil.
- Kod tamamen yapay zeka ile (Claude) yazıldı.
- Gerçek restoranda uzun süreli test edilmedi. Canlıda kullanacaksanız önce kendiniz deneyin.


Demo: https://qrmasa.aikodluyor.com/admin/
k.adı:demo
şifre:demo1234

Teknik: PHP 8, framework yok, Composer/npm yok, SQLite veya MySQL. cPanel'e atıp 2 adımda kuruluyor.

Öne çıkanlar: QR'da masa no görünmüyor (token), sipariş garson onayına düşüyor, mutfak ekranında sesli uyarı ve gruplu kartlar, kısmi/karma ödeme, gün sonu kasa mutabakatı, kim ne yaptı denetim kaydı, otomatik yedek.

Sizden ricam: sahada gerçekten hangi özellik lazım? Eksik gördüğünüz bir şey varsa yazın, ona göre geliştireyim. (Online ödeme, ESC/POS yazıcı, çoklu şube şu an kapsam dışı — hangisi öncelikli olmalı?)

Son olarak: canlı demo koyabilmek için küçük bir hosting/VPS sponsoru arıyorum. PHP 8 çalışan ufak bir yer yeterli. Sponsor olan arkadaşın adını README'de ve demo sayfasında belirtirim. İlgilenen olursa yazsın.

Teşekkürler!


📋 Neler var?

Müşteri tarafı
  • Masaya özel QR kod → mobil menü. URL'de masa numarası YOK, sadece rastgele token (panelden yenilenebilir)
  • Menüde arama + alerjen/vejetaryen/vegan filtresi, kalori gösterimi
  • Çok dilli menü: sadece arayüz değil, ürün adı ve açıklaması da TR/EN
  • Sepet, ürün varyantları (porsiyon/ekstra), ürün bazlı not
  • Sipariş garson onayına düşer; onaylanınca müşteri "hazırlanıyor / hazır" durumunu görür
  • "Hesabım" ekranı, garson çağır / hesap iste butonları
  • 3 tema, büyük yazı modu, PWA (ana ekrana ekle)
Garson ekranı
  • Canlı masa ızgarası — onay bekleyen masa yanıp söner, garson çağrısı zil rozetiyle gelir (sesli + titreşimli)
  • Adisyon: kalem ekle/sil, adet bazlı işlem ("3 çayın 1'ini sil/ikram et"), masaya taşı, birleştir, böl
  • İndirim, ikram, kuver/servis ücreti, kupon kodu
  • Tarayıcı pop-up'ı yok — hepsi dokunmatik modal. Ürün eklerken arama + kategori sekmeleri + sık satılanlar
  • Telefonda çalışacak şekilde mobil düzen
Mutfak ekranı (KDS)
  • Koyu tema, yeni siparişte sesli uyarı, masaya göre gruplu kartlar
  • Bekliyor → Hazırlanıyor → Hazır → Servis edildi; kısmi hazır (4 köftenin 2'si)
  • Yaş sayacı (geciken sipariş kırmızıya döner), istasyon filtresi (sadece içecekler vb.)
  • İptal edilen kalem sessizce kaybolmuyor — 60 saniye kırmızı "İPTAL" kartı olarak duruyor
  • Mutfaktan "stok bitti" işaretleme, tablet uyumasın diye Wake Lock
Kasa / muhasebe
  • Kısmi ve karma ödeme: "500 kart + 200 nakit" — adisyon tahsilat tamamlanınca kapanıyor
  • Gün sonu (Z) raporu + kasa mutabakatı (beklenen nakit ile sayılan nakit farkı)
  • İş günü kesim saati — gece 02:00'de kapanan hesap önceki güne yazılıyor, ciro ikiye bölünmüyor
  • İade akışı, "tahsil edilemedi" (kaçak) kapanışı, KDV dökümü, 80mm termal fiş
  • Raporlar: ciro, ödeme kırılımı, ürün satışları, saatlik yoğunluk, personel kırılımı, CSV dışa aktarma
Denetim / güvenlik
  • Denetim kaydı: indirim, ikram, kalem silme, iptal, ödeme — kim, ne zaman, ne kadar
  • Kalem silme soft-delete (rapordan düşer ama iz kalır)
  • Tüm sorgular prepared statement, her personel işleminde oturum + rol + CSRF kontrolü
  • Eşzamanlılık koruması (iki garson aynı anda aynı adisyona dokunursa çakışma engelleniyor)
  • Roller: yönetici / kasiyer / garson / mutfak
Paket servis + bakım
  • Telefon siparişi: müşteri adı/telefon/adres/teslim saati, müşteri kaydı ("her zamankinden")
  • Otomatik günlük yedek (cron gerekmiyor), tam yedek (veritabanı + görseller + config)
  • Sistem durumu ekranı, acil durum dökümü (elektrik kesintisinde açık adisyonların çıktısı)
  • CLI ile admin şifre sıfırlama, rol bazlı yardım sayfası
[HR][/HR]

⚙️ Teknik
  • PHP 8.0+ — framework yok, Composer yok, npm yok, build adımı yok
  • Veritabanı: SQLite (varsayılan, kurulum gerektirmez) veya MySQL
  • Vanilla JS — jQuery bile yok
  • Paylaşımlı hostinge FTP ile atıp 2 adımlı sihirbazla kurulur
  • 603 uçtan uca test tek komutta çalışıyor
Yani cPanel'i olan herkes kurabilir, ekstra bir şey gerekmiyor.