✚ ClinicBook - Klinik Otomasyon Sistemi (v3.1)
ClinicBook, klinisyenlerin (doktorlar, fizyoterapistler, psikologlar vb.) randevularını, hastalarını ve klinik performanslarını yönetebilecekleri, Activepieces tabanlı otomasyon desteğine sahip modern bir yönetim panelidir.
🚀 Teknoloji Stack'i
Backend
- Framework: Fastify (Node.js)
- ORM: Prisma
- Veritabanı: PostgreSQL
- Auth: JWT (Jose kütüphanesi)
- Otomasyon: Node-cron (Hatırlatmalar) & Activepieces Webhook entegrasyonu
Frontend
-
Framework: React 19 (Vite)
-
State Management: Zustand
-
Styling: Vanilla CSS (Custom Properties / Theme system)
-
Charts: Recharts
-
Icons: Lucide React
-
Tarih İşlemleri: date-fns
🛠 Kurulum ve Başlangıç
-
Depoyu Klonlayın ve Bağımlılıkları Yükleyin Hem clinicbook-backend hem de clinicbook-frontend klasörlerinde terminali açıp şu komutu çalıştırın: 1 npm install
-
Veritabanı ve Ortam Değişkenleri clinicbook-backend klasörü içerisinde bir .env dosyası oluşturun (örnek .env.example dosyasını inceleyin). En kritik değişkenler:
- DATABASE_URL: PostgreSQL bağlantı adresiniz.
- JWT_ACCESS_SECRET: Rastgele uzun bir karakter dizisi.
-
Veritabanı Şemasını Hazırlayın Backend klasöründe şu komutu çalıştırarak tabloları oluşturun ve Prisma Client'ı generate edin: 1 npx prisma db push
-
Hata Yönetimi Sistem genelinde hatalar standartlaştırılmıştır. Backend'den gelen tüm hatalar
{ message: '...' }formatındadır. Frontend tarafındagetErrorMessageutility'si kullanılarak kullanıcıya teknik olmayan, anlamlı mesajlar gösterilir.
📂 Proje Yapısı
Backend (/src)
- controllers/: API mantığının bulunduğu yer (Auth, Randevu, Hasta, Stats, Webhooks).
- services/:
- scheduler.ts: 24 saat ve 2 saat kala çalışan SMS/Email hatırlatma cron jobları.
- activepieces.ts: Otomasyon akışlarını tetikleyen webhook göndericisi.
- routes/: Fastify endpoint tanımlamaları.
- prisma/schema.prisma: Veritabanı modelleri (User, Patient, Appointment, SessionNote, Survey vb.).
Frontend (/src)
-
pages/: Sayfa bileşenleri (Dashboard, Calendar, Patients, Analytics, Settings).
-
store/: Zustand store'ları (Auth, Appointment, Patient). API çağrıları burada yönetilir.
-
services/: Axios instance ve endpoint tanımlamaları.
-
styles/theme.css: Global CSS değişkenleri ve renk paleti.
🔑 Önemli İş Akışları
- Multi-Tenancy: Her kayıt olan kullanıcı bir "Klinik" sahibidir. Veriler userId üzerinden izole edilir.
- Slug Sistemi: Her klinisyene ismi üzerinden benzersiz bir slug (örn: ahmet-kaya) atanır. Bu slug, hastaların dışarıdan randevu alabileceği public booking sayfası için kullanılır.
- Otomasyon (PRD 6.3): Randevu oluşturulduğunda veya iptal edildiğinde activepieces.ts üzerinden harici otomasyon servislerine (SMS/Telegram vb.) sinyal gönderilir.
- Takvim Senkronizasyonu: Takvimdeki sürükle-bırak işlemleri anlık olarak backend'de startTime ve endTime günceller.
🛠 Yararlı Komutlar
-
npx prisma studio: Veritabanını tarayıcı üzerinden görüntülemek ve düzenlemek için.
-
npx prisma generate: Şemada değişiklik yaptıktan sonra Prisma client'ı güncellemek için.
Not: Bu proje DigitalOcean Studen Pack veya Hetzner VPS üzerinde self-hosted çalışacak şekilde tasarlanmıştır. Tüm mimari vendor lock-in (dışa bağımlılık) olmadan kurgulanmıştır.