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. 🔄
-
HTTP Metodları (CRUD) kullanılarak kaynaklar üzerinde işlemler yapılır:
GET🔍 → Veri okumaPOST➕ → Yeni veri oluşturmaPUT/PATCH✏️ → Veri güncellemeDELETE❌ → 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/1234Burada "rooms" 🛏️ kaynağıdır, "1234" ise o kaynağın benzersiz kimliğidir.
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. |
- 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.
- 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. 🎭
| 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ı |
- 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.
- 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.
- 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.
- Rapid API ⚡ platformu üzerinden Instagram 📸, LinkedIn 💼 ve Twitter 🐦 gibi sosyal medya platformlarından takipçi sayıları dinamik olarak çekilmektedir.
- API üzerinden dosya yükleme ve indirme işlemleri yapılabilir. 📁⬆️⬇️
- Kullanıcı deneyimini artırmak için AJAX 🌀 ile sayfa yenilenmeden veri gönderme ve alma işlemleri yapılır.
- FluentValidation ✔️ kütüphanesi kullanılarak gelen verilerin doğruluğu ve tutarlılığı kontrol edilir.
- 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. 📬
- 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.
- Veritabanı işlemlerinde Repository Design Pattern 🗄️ kullanılarak katmanlar arasındaki bağımlılık minimize edilmiş,
- Veri erişim soyutlanmıştır.
- İş 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.
- 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. 👤
- 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. 📧
- 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. 📬
- Kullanıcı, ad-soyad, mail ve konu seçimi ile mesajını yöneticiye gönderebilir. 📨
- Kullanıcı, Ad Soyad, Cinsiyet, Kullanıcı Adı, Mail ve şifre ile kayıt olur.
- Kayıt sonrası giriş sayfasına yönlendirilir. 🔐
- 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. ⏲️
- JSON Web Token (JWT) 🔏 ile API güvenliği ve kimlik doğrulama.
- Rapid API ile parametreli dinamik veri çekme. ⚡
Proje, temiz, sürdürülebilir ve ölçeklenebilir mimarisi ile profesyonel seviyede geliştirilmeye çalışılmıştır.




























