Randevuyla çalışan işletmeler için randevu, müşteri takibi ve hatırlatma sistemi: salon, klinik, danışmanlık ofisi. Günün programı her sabah hazır.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @keremozblOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Klinik ve işletmeler için randevu, hasta takibi ve otomatik hatırlatma sistemi. Çok kiracılı; işletme kayıt olur, sektörünü seçer, hazır bir şablonla kendi altyapısını kurar.
Plan ve mimari kararlar: docs/PLAN.md
Canlıya geçiş kontrol listesi: docs/CANLIYA-GECIS.md
Geliştirme kuralları: CLAUDE.md
npm install
cp .env.example .env
Docker kurulu olmadığı için yerel Supabase yerine bulut projesiyle
çalışıyoruz. Supabase CLI npx ile gelir, ayrıca kurulum gerekmez.
docs/PLAN.md Bölüm 12.2.URL, publishable ve secret anahtarları .env'e yaz.SUPABASE_DB_URL olarak .env'e yaz. Paroladaki özel karakterler
yüzde-kodlanmalı (# → %23).npm run db:push # migration'lar uygulanır
npm run db:seed # izin kataloğu ve rol şablonları
npm run db:advisors # güvenlik + performans denetimi
npm run rls:test # canlı kiracı izolasyonu ve çakışma testi
Tipleri yenilemek için (şema değiştikçe):
npm run db:types # personal access token gerekir, Docker gerekmez
db diffgölge veritabanı için Docker ister; kurulu değilse migration'larsupabase/migrations/altına elle yazılır.
npm run dev # http://localhost:3000
npm run typecheck
npm run lint
npm run build
Depo GitHub'a bağlı; main'e gelen her commit dağıtımı tetikler.
Environment Variables (Settings → Environment Variables):
| Değişken | Not |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Settings → API |
NEXT_PUBLIC_SUPABASE_ANON_KEY | aynı yer |
SUPABASE_SERVICE_ROLE_KEY | aynı yer; NEXT_PUBLIC_ ön eki ASLA eklenmez |
CRON_SECRET | kuyruk uç noktasının sırrı; yoksa uç nokta 503 döner |
NEXT_PUBLIC_SITE_URL | Vercel'de gerekmez — aşağıya bakın |
NEXT_PUBLIC_SITE_URL Vercel'de boş bırakılır: kod, Vercel'in kendi verdiği
NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL değerine düşer ve özel alan adı
bağlandığında kendiliğinden ona döner. Yerel .envi Vercel'e olduğu gibi
kopyalayıp localhost yazarsan o değer yok sayılır — aksi hâlde kurumun
paylaştığı bağlantı, karekodun içi ve hatırlatma mesajındaki link hep
localhost gösterirdi.
Supabase tarafında Authentication → URL Configuration → Site URL ve
Redirect URLs aynı adrese ayarlanır; yoksa giriş yönlendirmeleri
localhosta düşer.
Cron günde bir. vercel.json 0 6 * * * kullanıyor. Daha sık bir
ifade (*/5 * * * *) Hobby'de dağıtımı reddediyor, yavaşlatmıyor.
Gerçek beş dakikalık kuyruk boşaltma için Supabase'in pg_cron'u
kullanılır — hazır SQL docs/CANLIYA-GECIS.md B10 içinde.
Commit yazarı hesapla eşleşmeli. Vercel, sahibine eşleştiremediği bir
commit'i "başka bir katkıcı" sayar ve derlemeyi hiç başlatmaz; günlük bile
üretmez, sadece "Hobby teams do not support collaboration" der. git config user.email GitHub hesabına ekli ve doğrulanmış bir adres olmalı.
git config --global user.email # GitHub'a ekli adresle aynı mı?
src/app/ sayfalar ve server action'lar
src/lib/domain/ iş kuralları — slot hesaplama, çakışma, fiyat
src/lib/supabase/ client (tarayıcı) · server (SSR) · admin (servis rolü)
src/lib/templates/ sektör şablonları (JSON) — yeni sektör = yeni dosya
supabase/schemas/ şemanın TEK kaynağı; migration bunlardan üretilir
supabase/seed.sql izin kataloğu ve rol şablonları
docs/PLAN.md ürün, teknik ve hukuki plan
Faz 0 — kurulum. Tamamlananlar: