Modern ve kullanıcı dostu bir veteriner kliniği yönetim sistemi. ASP.NET Core MVC ile geliştirilmiş, tam özellikli bir web uygulaması.
NOT : Projenin amacı ; Katmanlı mimari mantığını tamamen oturtmak ve bunu ispatlamaktır. Herhangi bir şekilde projenin product ready olarak sunulması gibi bir durum söz konusu değildir. İlerleyen zamanlarda product ready olacak şekilde güncellemeler devam edebilir.
- Proje Hakkında
- Özellikler
- Teknolojiler
- Mimari
- Kurulum
- Kullanım
- Ekran Görüntüleri
- Veritabanı Şeması
- Güvenlik
- Katkıda Bulunma
- Lisans
- İletişim
Vetify, veteriner kliniklerinin günlük operasyonlarını dijitalleştiren, modern ve kullanıcı dostu bir yönetim sistemidir. Hayvan sahipleri ve veterinerler için ayrı paneller sunarak, randevu yönetiminden tedavi takibine, ödeme işlemlerinden sağlık kayıtlarına kadar tüm süreçleri tek bir platformda toplar.
Ege Aytaç
- GitHub: @nullablege
- Proje: Vetify
- Gerçek zamanlı istatistikler
- Toplam hayvan sayısı
- Bugünkü randevu sayısı ve tamamlanma oranı
- Bekleyen randevu sayısı
- Aylık gelir takibi
- Bugünkü randevu listesi
- Hayvan kayıt sistemi (Ad, Tür, Cins, Yaş, Kilo, vb.)
- Hayvan profil detayları
- Hayvan sahipleri ile ilişkilendirme
- Hayvan arama ve filtreleme
- Hayvan düzenleme ve silme
- Randevu oluşturma
- Randevu düzenleme
- Randevu iptal etme
- Randevu durumu takibi (Planlandı, Tamamlandı, İptal Edildi)
- Tarih ve saat bazlı randevu planlama
- Müşteri ve hayvan bazlı randevu görüntüleme
- Tedavi kayıt sistemi
- Tedavi türleri (Aşılama, Ameliyat, Kontrol, Diş Tedavisi, İlaç Tedavisi, Acil Müdahale)
- Tedavi detayları ve notlar
- Tedavi ücretlendirmesi
- Randevu bazlı tedavi takibi
- Tedavi düzenleme ve silme
- Ödeme kayıt sistemi
- Ödeme yöntemleri (Nakit, Kredi Kartı, Havale/EFT)
- Ödeme durumu takibi (Ödendi, Kısmi Ödeme, Ödenmedi)
- Bu ay toplam gelir
- Bugün alınan ödemeler
- Bekleyen borç takibi
- Yıllık gelir istatistikleri
- Randevu bazlı ödeme görüntüleme
- Toplam hayvan sayısı
- Planlanmış randevu sayısı
- Son 30 gün ödeme tutarı
- Son 30 gün tedavi sayısı
- Güncel borç durumu
- Son randevular listesi
- Gerçek Zamanlı Hava Durumu
- Klinik konumu hava durumu
- Kullanıcı konumu hava durumu
- Sıcaklık ve hava durumu açıklaması
- Mesafe ve Süre Hesaplama
- Kullanıcı konumundan kliniğe mesafe (km)
- Tahmini varış süresi
- Haversine formülü ile hassas hesaplama
- Güncel Döviz Kurları
- USD/TRY kuru
- EUR/TRY kuru
- 3 saatlik önbellek sistemi
- Kendi hayvanlarını görüntüleme
- Yeni hayvan ekleme
- Hayvan detay sayfası
- Hayvan bazlı randevu geçmişi
- Hayvan bazlı tedavi geçmişi
- Hayvan bazlı ödeme geçmişi
- Randevu alma
- Randevu görüntüleme
- Randevu iptal etme
- Randevu durumu takibi
- Geçmiş tedavileri görüntüleme
- Tedavi detayları
- Tedavi ücretleri
- Ödeme geçmişi
- Toplam ödenecek tutar
- Ödeme detayları
- ASP.NET Core Identity entegrasyonu
- Rol tabanlı yetkilendirme (Admin, Customer)
- Güvenli şifre politikaları
- Email bazlı kullanıcı yönetimi
- Oturum yönetimi (30 gün)
- "Beni Hatırla" özelliği
- Yetkisiz erişim koruması
- ASP.NET Core 8.0 MVC - Web framework
- Entity Framework Core - ORM
- ASP.NET Core Identity - Kimlik doğrulama ve yetkilendirme
- SQL Server - Veritabanı
- LINQ - Veri sorgulama
- Async/Await - Asenkron programlama
- Bootstrap 5.3.2 - UI Framework
- Bootstrap Icons - İkon kütüphanesi
- JavaScript (Vanilla) - İstemci tarafı etkileşimler
- Razor View Engine - Dinamik HTML oluşturma
- CSS3 - Özel stil düzenlemeleri
- Met.no Weather API - Gerçek zamanlı hava durumu verileri
- BigDataCloud Reverse Geocoding API - Konum bilgisi ve şehir adları
- ExchangeRate API - Güncel döviz kurları (USD, EUR)
- Geolocation API - Kullanıcı konumu ve mesafe hesaplama
- N-Tier Architecture (3 Katmanlı Mimari)
- Repository Pattern - Veri erişim katmanı
- Dependency Injection - Bağımlılık yönetimi
- Generic Repository - Genel veri işlemleri
- Service Layer Pattern - İş mantığı katmanı
Proje, 3 Katmanlı Mimari (N-Tier Architecture) kullanılarak geliştirilmiştir:
Vetify/
│
├── Vetify (Presentation Layer) # Sunum Katmanı
│ ├── Controllers/ # MVC Controllers
│ ├── Views/ # Razor Views
│ ├── Models/ # View Models
│ ├── wwwroot/ # Statik dosyalar
│ └── Program.cs # Uygulama başlangıcı
│
├── BL (Business Logic Layer) # İş Mantığı Katmanı
│ ├── Abstract/ # Service Interface'leri
│ └── Concrete/ # Service Implementasyonları
│
├── DAL (Data Access Layer) # Veri Erişim Katmanı
│ ├── Abstract/ # Repository Interface'leri
│ ├── Concrete/ # Repository Implementasyonları
│ └── Context.cs # DbContext
│
└── EL (Entity Layer) # Varlık Katmanı
├── Entities/ # Domain Modelleri
└── Enums/ # Enum Tanımlamaları
- Kullanıcı arayüzü ve etkileşimleri
- MVC Controllers
- Razor Views
- View Models
- Routing ve middleware yapılandırması
- İş kuralları ve validasyonlar
- Service pattern implementasyonu
- CRUD operasyonları
- İş mantığı soyutlaması
- Veritabanı işlemleri
- Repository pattern implementasyonu
- Entity Framework Core yapılandırması
- Generic repository
- Domain modelleri
- Veritabanı entity'leri
- Enum tanımlamaları
- İlişki yapılandırmaları
- .NET 8.0 SDK
- SQL Server (LocalDB, Express veya tam sürüm)
- Visual Studio 2022 veya Visual Studio Code
- Projeyi Klonlayın
git clone https://github.com/nullablege/Vetify.git
cd Vetify- Veritabanı Bağlantı Dizesini Yapılandırın
Vetify/appsettings.json dosyasını açın ve bağlantı dizesini düzenleyin:
{
"ConnectionStrings": {
"Default": "Server=(localdb)\\mssqllocaldb;Database=VetifyDb;Trusted_Connection=true;TrustServerCertificate=true"
}
}Alternatif Bağlantı Dizeleri:
SQL Server Express için:
"Default": "Server=.\\SQLEXPRESS;Database=VetifyDb;Trusted_Connection=true;TrustServerCertificate=true"SQL Server (Windows Authentication):
"Default": "Server=localhost;Database=VetifyDb;Trusted_Connection=true;TrustServerCertificate=true"SQL Server (SQL Authentication):
"Default": "Server=localhost;Database=VetifyDb;User Id=sa;Password=YourPassword;TrustServerCertificate=true"- NuGet Paketlerini Yükleyin
dotnet restore- Veritabanını Oluşturun
Package Manager Console'da (Visual Studio):
Update-Databaseveya Terminal'de:
dotnet ef database update- Uygulamayı Çalıştırın
dotnet run --project VetifyTarayıcınızda https://localhost:5001 adresine gidin.
Uygulama ilk çalıştırıldığında otomatik olarak bir admin hesabı oluşturulur:
Email: admin@admin.com
Şifre: admin
- Ana sayfada "Kayıt Ol" butonuna tıklayın
- Gerekli bilgileri doldurun
- Kayıt olduktan sonra otomatik olarak giriş yapılır
- Müşteri paneline yönlendirilirsiniz
-
Hayvan Kaydı
- Hayvanlar → Yeni Hayvan Ekle
- Hayvan bilgilerini ve sahibini seçin
- Kaydet
-
Randevu Oluşturma
- Randevular → Yeni Randevu Oluştur
- Müşteri ve hayvanı seçin
- Tarih ve saat belirleyin
- Kaydet
-
Tedavi Kaydı
- Tedaviler → Yeni Tedavi Ekle
- Randevuyu seçin
- Tedavi türü ve detayları girin
- Ücret belirleyin
- Kaydet
-
Ödeme Alma
- Ödemeler → Yeni Ödeme Kaydet
- Randevuyu seçin
- Ödeme tutarı ve yöntemi girin
- Kaydet
-
Hayvan Ekleme
- Hayvanlarım → Yeni Hayvan Ekle
- Hayvan bilgilerini girin
- Kaydet
-
Randevu Alma
- Randevularım → Randevu Al
- Hayvanınızı seçin
- Tarih ve saat belirleyin
- Kaydet
-
Takip
- Dashboard'dan genel durumu görüntüleyin
- Tedavilerim'den geçmiş tedavileri inceleyin
- Ödemelerim'den borç durumunu kontrol edin
- Dashboard: Genel istatistikler ve bugünkü randevular
- Hayvan Yönetimi: Tüm hayvanların listesi ve detayları
- Randevu Yönetimi: Randevu oluşturma ve düzenleme
- Tedavi Yönetimi: Tedavi kayıtları ve detayları
- Ödeme Yönetimi: Ödeme takibi ve istatistikler
- Dashboard: Kişisel istatistikler
- Hayvanlarım: Hayvan listesi ve detayları
- Randevularım: Randevu alma ve görüntüleme
- Tedavilerim: Tedavi geçmişi
- Ödemelerim: Ödeme geçmişi ve borç durumu
- Identity tablosu
- Kullanıcı bilgileri
- Roller (Admin, Customer)
- Id, Ad, Tur, Cins, DogumTarihi, Kilo
- Cinsiyet, Renk, Notlar
- SahipId (FK → Kullanici)
- Id, RandevuZamani, Durum, Notlar
- HayvanId (FK → Hayvan)
- MusteriId (FK → Kullanici)
- Id, TedaviTuru, TedaviTarihi, Ucret
- Aciklama
- RandevuId (FK → Randevu)
- Id, Tutar, OdemeYontemi, OdemeTarihi
- Durum, Notlar
- RandevuId (FK → Randevu)
- MusteriId (FK → Kullanici)
- Id, Tarih, Konu, Detay
- HayvanId (FK → Hayvan)
- Id, FaturaTarihi, ToplamTutar
- RandevuId (FK → Randevu)
Kullanici (1) ─── (N) Hayvan
Kullanici (1) ─── (N) Randevu
Kullanici (1) ─── (N) Odeme
Hayvan (1) ─── (N) Randevu
Hayvan (1) ─── (N) SaglikKaydi
Randevu (1) ─── (N) Tedavi
Randevu (1) ─── (N) Odeme
Randevu (1) ─── (1) Fatura
- ASP.NET Core Identity ile güvenli kimlik doğrulama
- Email bazlı kullanıcı yönetimi
- Şifre hashleme (PBKDF2)
- Güvenli cookie tabanlı oturum yönetimi
- Rol tabanlı erişim kontrolü
[Authorize(Roles = "Admin")]- Sadece admin erişimi[Authorize(Roles = "Customer")]- Sadece müşteri erişimi- Yetkisiz erişim engelleme
options.Password.RequireDigit = false;
options.Password.RequireUppercase = false;
options.Password.RequireLowercase = false;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequiredLength = 6;Not: Üretim ortamında daha güçlü şifre politikaları kullanılmalıdır.
- HTTPS zorunluluğu
- Anti-forgery token koruması
- SQL Injection koruması (Entity Framework)
- XSS koruması (Razor encoding)
- CSRF koruması
wwwroot/vet/styles.css dosyasını düzenleyerek tema renklerini değiştirebilirsiniz.
Program.cs dosyasında Identity yapılandırmasını düzenleyin:
builder.Services.AddIdentity<Kullanici, IdentityRole<int>>(options =>
{
options.Password.RequireDigit = true;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequiredLength = 8;
})Program.cs dosyasında cookie yapılandırmasını düzenleyin:
builder.Services.ConfigureApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(7); // 7 gün
})- Admin hesabı ile giriş yapın
- Bir müşteri hesabı oluşturun
- Müşteri için hayvan ekleyin
- Randevu oluşturun
- Tedavi kaydedin
- Ödeme alın
- Müşteri hesabı ile giriş yapıp verileri kontrol edin
- Fatura oluşturma ve yazdırma
- Email bildirimleri
- SMS hatırlatmaları
- Raporlama modülü
- Stok yönetimi
- Personel yönetimi
- Takvim görünümü
- Dosya yükleme (röntgen, test sonuçları)
- API geliştirme
- Mobil uygulama
Katkılarınızı bekliyorum! Lütfen şu adımları izleyin:
- Projeyi fork edin
- Feature branch oluşturun (
git checkout -b feature/AmazingFeature) - Değişikliklerinizi commit edin (
git commit -m 'Add some AmazingFeature') - Branch'inizi push edin (
git push origin feature/AmazingFeature) - Pull Request oluşturun
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Ege Aytaç
- GitHub: @nullablege
- Proje Linki: https://github.com/nullablege/Vetify
Proje, kullanıcı deneyimini zenginleştirmek için çeşitli üçüncü parti API'ler kullanmaktadır:
- Amaç: Gerçek zamanlı hava durumu verileri
- Kullanım: Klinik ve kullanıcı konumu için hava durumu gösterimi
- Özellikler:
- Sıcaklık bilgisi
- Hava durumu açıklaması (Açık, Bulutlu, Yağmurlu, vb.)
- 1 ve 6 saatlik tahminler
- Endpoint:
https://api.met.no/weatherapi/locationforecast/2.0/compact - Önbellek: 3 saat (Cookie tabanlı)
- Amaç: Koordinatlardan şehir ve konum bilgisi alma
- Kullanım: Kullanıcı ve klinik konumlarının şehir adlarını gösterme
- Özellikler:
- Türkçe konum adları
- Şehir ve mahalle bilgisi
- Yüksek doğruluk oranı
- Endpoint:
https://api.bigdatacloud.net/data/reverse-geocode-client - Önbellek: 3 saat (Cookie tabanlı)
- Amaç: Güncel döviz kurları
- Kullanım: Müşteri dashboard'unda USD ve EUR kurlarını gösterme
- Özellikler:
- TRY bazlı döviz kurları
- Günlük güncelleme
- Otomatik kur hesaplama
- Endpoint:
https://api.exchangerate-api.com/v4/latest/TRY - Önbellek: 3 saat (Cookie tabanlı)
- Amaç: Kullanıcı konumu tespiti
- Kullanım: Kliniğe olan mesafe ve tahmini varış süresini hesaplama
- Özellikler:
- Haversine formülü ile hassas mesafe hesaplama
- Tahmini seyahat süresi (ortalama 20 km/saat)
- Kullanıcı izni ile konum erişimi
- Teknoloji: Browser Geolocation API
- Önbellek: 3 saat (Cookie tabanlı)
Önbellek Stratejisi:
- Tüm API çağrıları cookie tabanlı önbellek kullanır
- Önbellek süresi: 3 saat
- Gereksiz API çağrılarını önler
- Sayfa yüklenme hızını artırır
Hata Yönetimi:
- API hatalarında varsayılan değerler gösterilir
- Console'da detaylı hata logları
- Kullanıcı deneyimini kesintiye uğratmaz
Performans:
- Asenkron API çağrıları (async/await)
- Paralel veri yükleme
- Önbellek ile hızlı sayfa yükleme
Bu projeyi geliştirirken kullanılan teknolojiler, kütüphaneler ve API servisleri:
- Met.no Weather API - Hava durumu verileri
- BigDataCloud - Reverse geocoding
- ExchangeRate API - Döviz kurları
Görseller :
Kullanıcı Görselleri :

⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın!
Made with ❤️ by Ege Aytaç







