1w1Game1Week

Vaka Çalışması

Berber Randevu

Gerçek bir berber dükkanı için 4 günde canlıya alınan randevu sistemi. Randevu defteri, berberin zaten her gün baktığı Google Takvim.

Süre
4 gün
Durum
Canlıda
Teknoloji
Next.js · Google Calendar API
Geliştirme
AI destekli
Canlı demoyu aç

Problem

Randevu trafiği telefon, WhatsApp ve Instagram mesajları arasında dağılmıştı. Usta tıraş sırasında telefona bakmak zorunda kalıyor, deftere yazılan randevular atlanıyor, gelmeyen müşteriler için hatırlatma yapılamıyordu. Hazır randevu programları ise hem aylık ücretliydi hem de berberin öğrenmesi gereken yeni bir uygulama demekti.

Yaklaşım: berberin zaten kullandığı aracın üzerine kurmak

Yeni bir uygulama öğretmek yerine sistemi, berberin telefonunda zaten açık olan Google Takvim'in üzerine kurduk. Müşteri saat seçtiği anda randevu doğrudan takvime düşüyor; berber gün içinde hiçbir panel açmadan işini alıştığı takvimden yürütüyor. Panel yalnızca hizmetleri, çalışma saatlerini ve personeli ayarlamak için gerekiyor. Müşterinin de üyelik açması gerekmiyor: ad, telefon ve e-posta ile randevu alınıyor.

En zorlu kısım: takvimle çift yönlü senkron

Bir randevu dört ayrı yerden değiştirilebiliyor. Hangisi kullanılırsa kullanılsın kayıt tek bir doğru hâle yakınsıyor ve ilgili herkese bilgilendirme gidiyor. İşin zor tarafı, değişikliğin uygulamanın tamamen dışında — Google Takvim uygulamasının içinde — olabilmesi: tetiklenecek bir buton yok.

  • Berber · Yönetim paneli
  • Berber · Google Takvim uygulaması

Tek randevu kaydı

  • Müşteri · E-postadaki bağlantı
  • Müşteri · Google Takvim uygulaması
Değişiklik nereden gelirse gelsin, bildirim ilgili herkese gider.
  • Berber panelden taşır ya da iptal ederse takvim güncellenir, müşteriye bilgilendirme gider.
  • Berber doğrudan takvim uygulamasından taşır ya da silerse, 5 dakikada bir dönen kontrol turu bunu yakalar; kayıt güncellenir, müşteriye ve berbere mail gider, panelde randevu “takvimden taşındı” rozetiyle işaretlenir.
  • Berberin kendi takvimine eklediği herhangi bir etkinlik — kişisel işi, telefonla verilmiş bir söz — o saatleri müşteriye otomatik kapatır. Çift rezervasyon oluşmaz.
  • Müşteri, onay e-postasındaki bağlantıdan kendisi iptal veya taşıma yapabilir; bunun randevudan en az kaç saat önce yapılabileceğini berber belirler.

Sessiz veri kaybına karşı koruma

Takvim listesi bir randevuyu döndürmediğinde sistem onu silinmiş saymıyor; etkinliği tek tek doğruluyor ve yalnızca gerçekten silinmişse iptal işliyor. Bu olmasaydı geçici bir API hatası, dükkanın bütün randevularını topluca iptal edip müşterilere yanlış e-postalar gönderebilirdi.

Üründen ekran görüntüleri

Aşağıdaki ekranlar canlı üründen alındı. Demo dükkanın iletişim bilgileri, ekran görüntüleri için sahte değerlerle değiştirildi.

Müşteri tarafı

Randevu sayfası: hizmet, usta, gün ve saat seçimi. Uygun olmayan saatler hiç gösterilmiyor; form altında bot koruması çalışıyor.

Müşteri tarafıMüşteri tarafı

Berber paneli

Yaklaşan randevular tek listede; iptal ve taşıma buradan yapılıyor, her işlemde müşteriye bilgilendirme gidiyor.

Berber paneli

Paylaşım ve QR

Randevu bağlantısı tek dokunuşla kopyalanıyor, WhatsApp ve Instagram için hazır yönlendirmeler var; vitrine asmak için yazdırılabilir QR kod indiriliyor.

Paylaşım ve QR

Ayarlar

Dükkan kuralları, açık/kapalı rozeti, tatil dönemleri, iletişim bilgileri, çalışanlar ve paralel takvimler, çalışma saatleri ve hizmet listesi — hepsi berberin kontrolünde.

AyarlarAyarlarAyarlarAyarlarAyarlarAyarlar

Çalışan yönetimi

Tek kişilik bir dükkanla çok ustalı bir salonun ihtiyacı aynı değil. Sistem ikisini de karşılıyor:

  • Müşteri randevu alırken ustasını seçebiliyor ya da “fark etmez” diyebiliyor.
  • Paralel takvim modunda her çalışana ayrı bir Google Takvim açılıyor; aynı saatte iki ayrı ustaya iki randevu alınabiliyor, “fark etmez” diyen müşteri o saatte boş olan ustaya otomatik atanıyor.
  • Çalışanın Gmail adresi girilirse takvimi kendisiyle paylaşılıyor: usta kendi telefonundan yalnızca kendi randevularını görüyor ve meşguliyet bloğu ekleyerek o saatleri kapatabiliyor.
  • Her çalışanın haftalık programı ayrı tanımlanıyor ve dükkan saatleriyle kesişiyor — tam gün, yarım gün ya da o gün hiç çalışmama. Müşteri o ustayı seçtiğinde yalnızca gerçekten uygun saatleri görüyor.
  • Yıllık izin ve rapor gibi dönemler tam gün veya saatli giriliyor; yalnızca o ustayı kapatıyor, dükkan ve diğer ustalar çalışmaya devam ediyor.

Kim, ne zaman haber alıyor?

Randevu sisteminin asıl işi hatırlatmak. Tüm e-postalar tek bir markalı şablonla gönderiliyor; geçici hatalarda gönderim otomatik yeniden deneniyor.

OlayBildirim gidenler
Yeni randevuMüşteri + berber
Panelden taşıma veya iptalMüşteri
Takvimden elle taşıma veya silmeMüşteri + berber + çalışan
Müşterinin kendi yaptığı değişiklikMüşteri + berber
Hatırlatma (randevudan ~75 dk önce)Müşteri + berber
Takvim bağlantısı koptuğundaBerber

Dükkan sayfası: ayrıca site yaptırmaya gerek kalmıyor

Her dükkanın paylaşılabilir kendi sayfası var: anlık açık/kapalı rozeti, tek dokunuşla arama butonu, adres, harita ve yol tarifi, çalışan listesi, çalışma saatleri tablosu ve randevu formu. Bağlantı WhatsApp'ta veya sosyal medyada paylaşıldığında çıplak bir link yerine dükkan adıyla önizleme kartı olarak görünüyor. Panelin paylaşım sekmesinden bağlantı tek dokunuşla kopyalanıyor; vitrine ya da aynanın kenarına asılmak üzere yazdırılabilir bir QR kod da indirilebiliyor.

Güvenlik ve dayanıklılık

Sahte randevuya karşı

Cloudflare Turnstile bot koruması ve istek sınırlaması; takvim uydurma kayıtlarla dolmuyor.

Kurallar sunucuda doğrulanıyor

Arayüzü atlayarak kapalı bir saat ya da müsait olmayan bir çalışan seçilemiyor.

Şifreli takvim erişimi

Google erişim anahtarları veritabanında AES-256-GCM ile şifreli tutuluyor; sistem takvime yalnızca randevu işlemleri için erişiyor.

Günlük yedek ve sağlık paneli

Otomatik günlük yedekler 30 gün saklanıyor; veritabanı, takvim bağlantıları, e-posta ve zamanlanmış görevler tek ekrandan izleniyor.

Teknik altyapı

Next.js ile geliştirildi ve Vercel üzerinde çalışıyor; veriler Upstash Redis'te tutuluyor, takvim işlemleri resmî Google Calendar API ile yürüyor. Senkron kontrolü ve hatırlatmalar 5 dakikada bir dönen zamanlanmış görevle çalışıyor. Altyapının tamamı yönetilen bulut servisleri — bakım isteyen bir sunucu yok.

Neden 4 gün?

Yukarıdaki her şey — takvim entegrasyonu, çift yönlü senkron, çalışan programları, altı ayrı bildirim akışı, dükkan sayfası ve güvenlik katmanı — dört günde tamamlandı. Bunu AI destekli geliştirme süreçlerimizle, Claude ile birlikte çalışarak yaptık. Sitede anlattığımız “bir haftada çalışan ürün” yaklaşımının kendi ürünümüzdeki karşılığı bu.

Bugün nerede?

Sistem dördüncü günün sonunda canlıya alındı ve o günden beri gerçek bir berber dükkanında kullanılıyor. Ürün henüz yeni yayında olduğu için büyük kullanım rakamlarımız yok; bu sayfada anlatılan her özellik tahmin değil, çalışan koddan geliyor ve canlı demoda kendiniz deneyebilirsiniz.

Ana sayfaya dön