Web Tabanlı Randevu ve Rezervasyon Sistemi Entegrasyonu Rehberi
Modern web uygulamalarına randevu motoru entegre etme adımları. Mimari seçim, çakışma önleme, API senkronizasyonu ve dijital ajans pratikleri.
Sistem Yöneticisi
Kıdemli Yazılım Mimarı
1. Mimari Karar: SaaS API vs. Özel Rezervasyon Motoru
Entegrasyon öncesi altyapı tipini belirleyin. İki ana yol mevcuttur:
- Headless SaaS (Cal.com, Calendly API): Hızlı dağıtım, sıfır takvim motoru bakımı, harici API bağımlılığı.
- Özel Motor (Native DB + Backend): Tam veri mülkiyeti, sıfır harici maliyet, karmaşık çakışma/zaman dilimi yönetimi.
Dijital ajans standardı: Yüksek hacimli özel iş mantığı yoksa headless API tercih edin; karmaşık biletleme/kaynak atamalarında yerel veritabanı motoru kurun.
2. Veritabanı Modeli ve Çakışma (Race Condition) Yönetimi
Aynı slota iki rezervasyon yapılmasını önlemek için uygulama kodu yerine veritabanı kısıtlamalarını (DB constraints) kullanın.
PostgreSQL ile Slot Kilitleme
Aralık (range) tipleri ve çakışma engelleme (exclusion constraints):
- Zaman verilerini UTC saklayın (
timestamptz). - İşlem anında satırı kilitleyin:
SELECT * FROM slots WHERE id = $1 FOR UPDATE; - Geçici kilitleme için Redis TTL kullanın (Örn: Ödeme ekranında 10 dakika süre tanıma).
3. Adım Adım Entegrasyon Aşamaları
Adım 1: Müsaitlik Matrisini Hesaplama
Statik çalışma saatlerinden mevcut rezervasyonları ve bloklanan günleri çıkarın. İş mantığını istemcide değil, sunucu tarafında çalıştırın.
Adım 2: Çift Yönlü Takvim Senkronizasyonu (Google / Outlook API)
Webhook tabanlı senkronizasyon kurun. Periyodik sorgulama (polling) sunucu kaynaklarını tüketir.
- Kullanıcı yetkilendirmesi: OAuth2 refresh token saklayın.
- Harici takvime etkinlik yazın:
Events.insert. - Geri bildirim: Webhook ile harici silmeleri yakalayın, yerel DB güncelleyin.
Adım 3: Ödeme ve Kesinleştirme
Idempotency key kullanarak mükerrer çekimleri engelleyin. Ödeme sağlayıcısının webhook yanıtıyla slotu confirmed durumuna getirin.
4. Modern Web Trendleri ve Kullanıcı Deneyimi
- Optimistic UI: Slot seçiminde anlık geri bildirim sağlayın, arka planda doğrulayın.
- Yerel Saat Dilimi Algılama: Tarayıcı API'si (
Intl.DateTimeFormat) ile istemci zaman dilimini otomatik eşleştirin. - Parolasız Onay: Magic link veya SMS OTP ile sürtünmesiz onay süreci uygulayın.
5. Güvenlik ve Doğrulama Kontrol Listesi
- Bot rezervasyonlarını kesmek için Cloudflare Turnstile veya reCAPTCHA v3 ekleyin.
- Slot sorgulama uç noktalarına IP başına Rate Limiting (dakikada max 60 istek) koyun.
- Tüm e-posta/SMS bildirimlerini kuyruk (Queue/Worker) üzerinden asenkron iletin.