Skip to content

nullablege/Vetify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐾 Vetify - Veteriner Kliniği Yönetim Sistemi

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.

.NET ASP.NET Core Entity Framework Bootstrap SQL Server

📋 İçindekiler

🎯 Proje Hakkında

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.

🎓 Geliştirici

Ege Aytaç

✨ Özellikler

👨‍⚕️ Veteriner Paneli (Admin)

📊 Dashboard

  • 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 Yönetimi

  • 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 Yönetimi

  • 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 Yönetimi

  • 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 Yönetimi

  • Ö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

👤 Müşteri Paneli

📊 Dashboard

  • 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

🐾 Hayvanlarım

  • 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

📅 Randevularım

  • Randevu alma
  • Randevu görüntüleme
  • Randevu iptal etme
  • Randevu durumu takibi

💊 Tedavilerim

  • Geçmiş tedavileri görüntüleme
  • Tedavi detayları
  • Tedavi ücretleri

💳 Ödemelerim

  • Ödeme geçmişi
  • Toplam ödenecek tutar
  • Ödeme detayları

🔐 Kimlik Doğrulama ve Yetkilendirme

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

🛠 Teknolojiler

Backend

  • 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

Frontend

  • 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

Entegre API Servisleri

  • 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

Mimari ve Tasarım Desenleri

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

🏗 Mimari

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ı

Katman Açıklamaları

1. Presentation Layer (Vetify)

  • Kullanıcı arayüzü ve etkileşimleri
  • MVC Controllers
  • Razor Views
  • View Models
  • Routing ve middleware yapılandırması

2. Business Logic Layer (BL)

  • İş kuralları ve validasyonlar
  • Service pattern implementasyonu
  • CRUD operasyonları
  • İş mantığı soyutlaması

3. Data Access Layer (DAL)

  • Veritabanı işlemleri
  • Repository pattern implementasyonu
  • Entity Framework Core yapılandırması
  • Generic repository

4. Entity Layer (EL)

  • Domain modelleri
  • Veritabanı entity'leri
  • Enum tanımlamaları
  • İlişki yapılandırmaları

📦 Kurulum

Gereksinimler

Adım Adım Kurulum

  1. Projeyi Klonlayın
git clone https://github.com/nullablege/Vetify.git
cd Vetify
  1. 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"
  1. NuGet Paketlerini Yükleyin
dotnet restore
  1. Veritabanını Oluşturun

Package Manager Console'da (Visual Studio):

Update-Database

veya Terminal'de:

dotnet ef database update
  1. Uygulamayı Çalıştırın
dotnet run --project Vetify

Tarayıcınızda https://localhost:5001 adresine gidin.

🚀 Kullanım

Admin Girişi

Uygulama ilk çalıştırıldığında otomatik olarak bir admin hesabı oluşturulur:

Email: admin@admin.com
Şifre: admin

⚠️ Önemli: Üretim ortamında bu bilgileri mutlaka değiştirin!

Müşteri Kaydı

  1. Ana sayfada "Kayıt Ol" butonuna tıklayın
  2. Gerekli bilgileri doldurun
  3. Kayıt olduktan sonra otomatik olarak giriş yapılır
  4. Müşteri paneline yönlendirilirsiniz

Temel İş Akışı

Veteriner (Admin) İçin:

  1. Hayvan Kaydı

    • Hayvanlar → Yeni Hayvan Ekle
    • Hayvan bilgilerini ve sahibini seçin
    • Kaydet
  2. Randevu Oluşturma

    • Randevular → Yeni Randevu Oluştur
    • Müşteri ve hayvanı seçin
    • Tarih ve saat belirleyin
    • Kaydet
  3. Tedavi Kaydı

    • Tedaviler → Yeni Tedavi Ekle
    • Randevuyu seçin
    • Tedavi türü ve detayları girin
    • Ücret belirleyin
    • Kaydet
  4. Ödeme Alma

    • Ödemeler → Yeni Ödeme Kaydet
    • Randevuyu seçin
    • Ödeme tutarı ve yöntemi girin
    • Kaydet

Müşteri İçin:

  1. Hayvan Ekleme

    • Hayvanlarım → Yeni Hayvan Ekle
    • Hayvan bilgilerini girin
    • Kaydet
  2. Randevu Alma

    • Randevularım → Randevu Al
    • Hayvanınızı seçin
    • Tarih ve saat belirleyin
    • Kaydet
  3. Takip

    • Dashboard'dan genel durumu görüntüleyin
    • Tedavilerim'den geçmiş tedavileri inceleyin
    • Ödemelerim'den borç durumunu kontrol edin

📸 Ekran Görüntüleri

Veteriner Paneli

  • 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

Müşteri Paneli

  • 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

🗄 Veritabanı Şeması

Ana Tablolar

Kullanici (AspNetUsers)

  • Identity tablosu
  • Kullanıcı bilgileri
  • Roller (Admin, Customer)

Hayvan

  • Id, Ad, Tur, Cins, DogumTarihi, Kilo
  • Cinsiyet, Renk, Notlar
  • SahipId (FK → Kullanici)

Randevu

  • Id, RandevuZamani, Durum, Notlar
  • HayvanId (FK → Hayvan)
  • MusteriId (FK → Kullanici)

Tedavi

  • Id, TedaviTuru, TedaviTarihi, Ucret
  • Aciklama
  • RandevuId (FK → Randevu)

Odeme

  • Id, Tutar, OdemeYontemi, OdemeTarihi
  • Durum, Notlar
  • RandevuId (FK → Randevu)
  • MusteriId (FK → Kullanici)

SaglikKaydi

  • Id, Tarih, Konu, Detay
  • HayvanId (FK → Hayvan)

Fatura

  • Id, FaturaTarihi, ToplamTutar
  • RandevuId (FK → Randevu)

İlişkiler

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

🔒 Güvenlik

Kimlik Doğrulama

  • 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

Yetkilendirme

  • Rol tabanlı erişim kontrolü
  • [Authorize(Roles = "Admin")] - Sadece admin erişimi
  • [Authorize(Roles = "Customer")] - Sadece müşteri erişimi
  • Yetkisiz erişim engelleme

Şifre Politikaları

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.

Güvenlik Önlemleri

  • HTTPS zorunluluğu
  • Anti-forgery token koruması
  • SQL Injection koruması (Entity Framework)
  • XSS koruması (Razor encoding)
  • CSRF koruması

🎨 Özelleştirme

Tema Değişikliği

wwwroot/vet/styles.css dosyasını düzenleyerek tema renklerini değiştirebilirsiniz.

Şifre Politikası

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;
})

Oturum Süresi

Program.cs dosyasında cookie yapılandırmasını düzenleyin:

builder.Services.ConfigureApplicationCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromDays(7); // 7 gün
})

🧪 Test

Manuel Test

  1. Admin hesabı ile giriş yapın
  2. Bir müşteri hesabı oluşturun
  3. Müşteri için hayvan ekleyin
  4. Randevu oluşturun
  5. Tedavi kaydedin
  6. Ödeme alın
  7. Müşteri hesabı ile giriş yapıp verileri kontrol edin

📈 Gelecek Geliştirmeler

  • 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ıda Bulunma

Katkılarınızı bekliyorum! Lütfen şu adımları izleyin:

  1. Projeyi fork edin
  2. Feature branch oluşturun (git checkout -b feature/AmazingFeature)
  3. Değişikliklerinizi commit edin (git commit -m 'Add some AmazingFeature')
  4. Branch'inizi push edin (git push origin feature/AmazingFeature)
  5. Pull Request oluşturun

📝 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.

📧 İletişim

Ege Aytaç

🌐 API Entegrasyonları

Proje, kullanıcı deneyimini zenginleştirmek için çeşitli üçüncü parti API'ler kullanmaktadır:

🌤️ Met.no Weather API

  • 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ı)

📍 BigDataCloud Reverse Geocoding API

  • 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ı)

💱 ExchangeRate API

  • 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ı)

🗺️ Geolocation API

  • 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ı)

🔧 API Yönetimi

Ö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

🙏 Teşekkürler

Bu projeyi geliştirirken kullanılan teknolojiler, kütüphaneler ve API servisleri:

Framework ve Kütüphaneler

API Servisleri


Görseller : Kullanıcı Görselleri : Screenshot_87 Screenshot_86 Screenshot_85 Screenshot_84 Screenshot_83 Screenshot_82

Yetkili Görselleri : Screenshot_95 Screenshot_94 Screenshot_93 Screenshot_92 Screenshot_91 Screenshot_90 Screenshot_89 Screenshot_88

⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın!

Made with ❤️ by Ege Aytaç

About

A .Net Core Application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors