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)
- 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
- 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
- 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 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
- 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ı
⚙️ 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