Skip to content

SemihSanli/HotelierAPI

Repository files navigation

🏨✨ Kurumsal Otel Rezervasyon RESTful API Projesi ✨🏨


🚀 Proje Hakkında

Bu proje, REST prensiplerine uygun olarak geliştirilmiş tam kapsamlı bir RESTful API uygulamasıdır. Backend işlemleri tamamen API üzerinden yönetilmekte olup, frontend ile backend arasındaki iletişim tamamen API çağrıları ile sağlanmaktadır.
Projede stateless (durumsuz) mimari esas alınmış, yani sunucu her isteği bağımsız olarak işler, önceki isteklerle ilgili herhangi bir durumu sunucu tarafında tutmaz. 🔄


📋 Projenin Temel Özellikleri

1️⃣ REST Prensiplerine Uygunluk

  • HTTP Metodları (CRUD) kullanılarak kaynaklar üzerinde işlemler yapılır:

    • GET 🔍 → Veri okuma
    • POST ➕ → Yeni veri oluşturma
    • PUT/PATCH ✏️ → Veri güncelleme
    • DELETE ❌ → Veri silme
  • Stateless yapı: Her istek sunucu için bağımsızdır, sunucu önceki isteklerden bilgi tutmaz. ⚙️

  • URL yapısı kaynak odaklıdır:
    Projedeki her entity bir "kaynak" olarak düşünülür. Örnek URL: /api/rooms/1234

    Burada "rooms" 🛏️ kaynağıdır, "1234" ise o kaynağın benzersiz kimliğidir.


2️⃣ Kurumsal Mimari - 6 Katmanlı Mimari Tasarım

Projede kurumsal mimari prensiplerine uygun olarak toplam 6 katman kullanılmıştır:

Katman Adı Görevleri
APILayer 🛠️ REST API endpoint’lerinin tanımlandığı katmandır. HTTP istekleri burada karşılanır.
BusinessLayer ⚙️ İş kuralları, mantık ve validasyonların yer aldığı katman.
DataAccessLayer 💾 Veritabanı ile doğrudan iletişim kuran, CRUD operasyonlarını gerçekleştiren katman.
EntityLayer 📦 Projedeki tüm entity (varlık) modellerinin tanımlandığı katman.
PresentationLayer 🖥️ Kullanıcı arayüzü ve frontend katmanıdır. Bu projede API ile entegre çalışır.

3️⃣ API Test ve Dokümantasyon

  • API'nin tüm CRUD operasyonları için Swagger 🧾 kullanılarak otomatik ve etkileşimli dökümantasyon oluşturulmuştur.
  • Ayrıca API çağrılarının kontrolü ve testleri için Postman 📨 kullanılmıştır.

4️⃣ Kimlik Doğrulama ve Yetkilendirme

  • Projede ASP.NET Identity 🔐 kütüphanesi ile kullanıcı kimlik bilgileri ve roller yönetilmiştir.
  • Kullanıcılar rollere atanarak farklı yetki seviyelerine sahip olurlar. 🎭

5️⃣ Projedeki Entityler

Entity Adı Açıklama
📝 About Hakkımızda bilgileri
🛡️ AppRole Roller
👤 AppUser Kullanıcı bilgileri
📅 Booking Rezervasyon kayıtları
📞 Contact İletişim bilgileri
🧳 Guest Misafir bilgileri
📂 MessageCategory Mesaj kategorileri
🛏️ Room Otel odaları
📩 SendMessage Gönderilen mesajlar
🛎️ Service Otelin sunduğu hizmetler
👥 Staff Personel bilgileri
📧 Subscribe Mail bülteni abonelikleri
💬 Testimonial Müşteri yorumları
📍 Worklocation Otel lokasyonları

6️⃣ Veri Dönüşümleri - AutoMapper

  • Projede veri transferi ve dönüşümleri için AutoMapper 🔄 kütüphanesi kullanılmıştır.
  • Entity modelleri ile DTO (Data Transfer Object) arasında otomatik ve kolay dönüşüm sağlanır.

7️⃣ Kod Kalitesi - SOLID ve Clean Code

  • Tüm kod yazımı sırasında SOLID prensipleri ⚖️ ve Clean Code kurallarına sıkı sıkıya uyulmuştur.
  • Böylece sürdürülebilir, okunabilir ve kolay bakım yapılabilir kod yapısı oluşturulmuştur.

8️⃣ Güvenlik - Yetkilendirme

  • API endpointlerinde [Authorize] 🛡️ ve [AllowAnonymous] 🚪 attribute'ları ile erişim kontrolü yapılmıştır.
  • Bazı sayfalar sadece yetkili kullanıcılar için açılırken, bazıları anonim erişime açıktır.

9️⃣ Rapid API Entegrasyonu

  • Rapid API ⚡ platformu üzerinden Instagram 📸, LinkedIn 💼 ve Twitter 🐦 gibi sosyal medya platformlarından takipçi sayıları dinamik olarak çekilmektedir.

🔟 Dosya İşlemleri

  • API üzerinden dosya yükleme ve indirme işlemleri yapılabilir. 📁⬆️⬇️

1️⃣1️⃣ AJAX Kullanımı

  • Kullanıcı deneyimini artırmak için AJAX 🌀 ile sayfa yenilenmeden veri gönderme ve alma işlemleri yapılır.

1️⃣2️⃣ Veri Doğrulama - FluentValidation

  • FluentValidation ✔️ kütüphanesi kullanılarak gelen verilerin doğruluğu ve tutarlılığı kontrol edilir.

1️⃣3️⃣ Mail Gönderimi - SMTP & MailKit

  • MailKit 📧 paketi ile SMTP protokolü üzerinden canlı mail gönderimi sağlanır.
  • Örneğin, rezervasyon durumu değiştiğinde kullanıcılara bilgilendirme maili otomatik gönderilir. 📬

1️⃣4️⃣ Frontend Yapısı - Razor Pages & ViewComponent

  • Projede Razor Pages 🖥️ ile sunum sayfaları hazırlanmış,
  • ViewComponent 🧩 kullanılarak tekrar kullanılabilir parçalara bölünmüş PartialView yapıları oluşturulmuştur.

1️⃣5️⃣ Repository Design Pattern

  • Veritabanı işlemlerinde Repository Design Pattern 🗄️ kullanılarak katmanlar arasındaki bağımlılık minimize edilmiş,
  • Veri erişim soyutlanmıştır.

1️⃣6️⃣ Entity Özgü Metotlar

  • İş katmanında özel metotlarla, örneğin:
  • Rezervasyon durum değişikliği kontrolleri 🔄
  • Dashboard’da son 4 personel ve rezervasyonun listelenmesi 📊
  • Personel sayısı, rezervasyon sayısı, toplam müşteri sayısı, toplam oda sayısı gibi istatistiklerin çekilmesi 📈

gibi ihtiyaçlara özel çözümler geliştirilmiştir.


🛠️ Admin Paneli Özellikleri

  • Personel, Referanslar, Hizmetler, Hakkımızda, Odalar, Misafirler, Kullanıcılar, Otel Lokasyonları, Roller ve Rol atama bölümlerinde CRUD işlemleri. 🔄
  • Rezervasyon yapıldığında, durum otomatik olarak "Onay Bekliyor" ⏳ olarak admin panelinde görünür.
  • Admin durumu güncellediğinde kullanıcıya bilgilendirme maili gönderilir. 📩
  • Mesajlar kısmından gelen mesajlar okunup yanıtlanabilir. 💬
  • Görsel veya PDF dosya yükleme ve yönetimi yapılabilir. 📷📄
  • Profil bilgileri güncellenebilir. 👤

👤 Kullanıcı Paneli Özellikleri

  • Otel hakkında genel bilgiler, odalar, tanıtım videosu 🎥, sağlanan hizmetler, müşteri yorumları 🗣️, ekip bilgileri görüntülenir.
  • Mail bülteni aboneliği ile e-posta adresi sisteme kaydedilebilir. 📧

🛎️ Rezervasyon Sayfası

  • Kullanıcı, ad-soyad, mail, giriş-çıkış tarihleri, yetişkin-çocuk sayısı, oda sayısı ve özel istekleri ile rezervasyon yapabilir.
  • Rezervasyon sonrası durum ile ilgili bilgilendirme maili kısa süre içinde kullanıcının mailine gider. 📬

📞 İletişim Sayfası

  • Kullanıcı, ad-soyad, mail ve konu seçimi ile mesajını yöneticiye gönderebilir. 📨

📝 Kayıt Olma Sayfası

  • Kullanıcı, Ad Soyad, Cinsiyet, Kullanıcı Adı, Mail ve şifre ile kayıt olur.
  • Kayıt sonrası giriş sayfasına yönlendirilir. 🔐

🔑 Giriş Sayfası

  • Kullanıcı adı ve şifre ile giriş yapılır.
  • Oturum süresi yaklaşık 5-10 dakika ile sınırlıdır. Süre dolduğunda cookie temizlenir, kullanıcı tekrar giriş yapmak zorundadır. ⏲️

🔐 Ekstra Güvenlik ve Teknolojiler

  • JSON Web Token (JWT) 🔏 ile API güvenliği ve kimlik doğrulama.
  • Rapid API ile parametreli dinamik veri çekme. ⚡

🎉 Teşekkürler! 🎉

Proje, temiz, sürdürülebilir ve ölçeklenebilir mimarisi ile profesyonel seviyede geliştirilmeye çalışılmıştır.

🖼️ Görseller

1 2 3 4 5 6 7 8 9 10 11 12 13 29 14

15 17 18 19 20 21 22 23 24 25 26 27 28 30

About

HotelierAPI

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages