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
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ı
- 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.


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

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.

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.






Ç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.
| Olay | Bildirim gidenler |
|---|---|
| Yeni randevu | Müşteri + berber |
| Panelden taşıma veya iptal | Müşteri |
| Takvimden elle taşıma veya silme | Müşteri + berber + çalışan |
| Müşterinin kendi yaptığı değişiklik | Müşteri + berber |
| Hatırlatma (randevudan ~75 dk önce) | Müşteri + berber |
| Takvim bağlantısı koptuğunda | Berber |
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.