Masa için kurulabilir uygulama
Okey 101 Skor Tablosu
Gerçek masada oynanan Okey 101 için kâğıt çetelenin yerini alan bir uygulama. Kim bitirdi, nasıl bitti ve eldeki taşlar girilir; cezalar ve toplamlar kurallara göre hesaplanır. Telefona uygulama gibi kurulur, internet olmadan açılır; masadaki diğerleri skoru bir QR koduyla kendi telefonlarından canlı izler.
- Durum
- Canlıda
- Araçlar
- Next.js 16 · React 19 · TypeScript · PWA · Service Worker · Upstash Redis · Vitest · Playwright

Problem
Kâğıt çetelede hesap hatası kolay, kural tartışması uzun: okeyle bitişte cezalar ikiye katlanır, çiftten açan iki kat yazar, açamayan sabit ceza alır. Uygulama masada, çoğu zaman zayıf bağlantıyla ve tek elle kullanılıyor; hızlı, hatasız ve internetsiz çalışması gerekiyordu.
Rolüm
Tek geliştirici: puanlama kuralları, arayüz, çevrimdışı çalışma, canlı paylaşım servisi ve testler.
Yaklaşım
- 01
Kurallar tek yerde, testli
Bitiş türleri, çarpanlar ve isteğe bağlı cezalar tek bir saf TypeScript modülünde; arayüz yalnız sonucu gösterir. Masaya göre değişen puanlar ayarlardan değiştirilir, her bitiş türü birim testleriyle doğrulanır.
- 02
Telefona kurulur, internetsiz açılır
Kendi manifesti ve simgeleriyle ana ekrana eklenir. Service worker sayfayı ve yüklenen dosyaları önbelleğe alır; bağlantı yokken son sürüm açılır, yenisi gelince kullanıcıya haber verilir. Oyun cihazda saklanır, yenilenen sayfada masa kaybolmaz.
- 03
Tek elle hızlı giriş
Telefonda sistem klavyesi yerine kendi sayı tuş takımı ve "Sonraki oyuncu" düğmesi; kaydedilen el bildirimden geri alınabilir, ekran oyun boyunca açık kalır. Bitmiş masalar geçmişte saklanır, oyuncu istatistikleri çıkarılır.
Zorlu an
Sunucusuz canlı izleme
Barındırma sürekli açık bağlantıya uygun değil. Skoru giren telefon her kayıtta masanın özetini gönderir; izleyenler 4 saniyede bir sorar ve sürüm değişmediyse sunucu gövdesiz 304 döner, sekme arka plandayken sormaz. Yazma anahtarı yalnız paylaşan cihazda kalır, sunucu onun yalnız SHA-256 parmak izini tutar; bağlantı iki gün sonra kendiliğinden silinir ve oluşturma IP başına sınırlıdır.