Harborlights, modern web teknolojileri kullanılarak geliştirilmiş tam özellikli bir otel yönetim sistemidir. Bu proje, ASP.NET Core MVC ile geliştirilmiş olup, otellerin ihtiyaç duyduğu oda/rezervasyon yönetimi, içerik yönetimi, blog ve çoklu dil desteğini içerir.
- Oteller için kapsamlı bir yönetim sistemi geliştirmek
- Modern web teknolojilerini öğrenmek ve uygulamak
- Katmanlı mimari ve tasarım desenlerini kullanmak
- Gerçek dünya problemlerine teknolojik çözümler üretmek
- Statik HTML template'ini dinamik web uygulamasına dönüştürmek
Bu proje, Harbor Lights HTML Template temel alınarak geliştirilmiştir.
Statik HTML'den Dinamik Uygulamaya Dönüşüm:
- ✨ Statik HTML → Dinamik ASP.NET Core MVC uygulaması
- 🎨 Bootstrap Template → Razor View Engine ile entegre edildi
- 🔄 Hard-coded İçerik → Database-driven dinamik içerik
- 🌐 Tek Dil → TR/EN Çoklu Dil desteği
- 👤 Statik Sayfa → Admin Paneli ile yönetilebilir sistem
- 🏗️ Frontend-only → Full-stack Enterprise çözüm
Template Transformasyon Detayları:
- Original template'in tüm tasarım özellikleri korundu
- CSS/JS dosyaları ASP.NET Core wwwroot yapısına uyarlandı
- HTML sayfalar Razor view'larına dönüştürüldü
- Statik veriler Entity Framework modellerine çevrildi
- Bootstrap 4 responsive tasarım korunarak modern MVC mimarisiyle birleştirildi
- ASP.NET Core MVC 9.0 - Ana framework
- Entity Framework Core - ORM (Object-Relational Mapping)
- ASP.NET Identity - Kimlik doğrulama ve yetkilendirme
- SQL Server Express - Veritabanı
- SignalR - Gerçek zamanlı iletişim
- Localization (.resx) - Türkçe/İngilizce çoklu dil
- HTML5/CSS3 - Temel yapı
- Bootstrap 5 - Responsive tasarım
- JavaScript/jQuery - İnteraktif özellikler
- AdminLTE - Admin panel tema
- Chart.js - Grafik ve istatistikler
- DataTables - Gelişmiş tablo özellikleri
- SweetAlert2 - Modern alert mesajları
- TinyMCE - Zengin metin editörü
- iTextSharp - PDF rapor üretimi
- EPPlus - Excel rapor üretimi
- QRCoder - QR kod üretimi
- Font Awesome - İkon kütüphanesi
- MyMemory API - Ücretsiz otomatik çeviri (opsiyonel)
HarborRestaurant/
├── 📁 Areas/
│ └── Admin/ # Admin paneli area'sı
│ ├── Controllers/ # Admin controller'ları
│ └── Views/ # Admin view'ları
├── 📁 Business/ # İş mantığı katmanı
│ ├── Abstract/ # Interface'ler
│ └── Concrete/ # Implementasyonlar
├── 📁 DataAccess/ # Veri erişim katmanı
│ ├── Abstract/ # Repository interface'leri
│ ├── Concrete/ # Repository implementasyonları
│ └── Context/ # Veritabanı context
├── 📁 Entities/ # Varlık modelleri
│ ├── Concrete/ # Entity sınıfları
│ └── Enums/ # Enum'lar
├── 📁 Controllers/ # MVC Controller'lar
├── 📁 Views/ # Razor View'lar
├── 📁 Models/ # ViewModel'ler
├── 📁 wwwroot/ # Statik dosyalar
├── 📁 Resources/ # Çoklu dil kaynakları
└── 📁 Migrations/ # EF Migration'ları
- Repository Pattern - Veri erişim soyutlaması
- Unit of Work - Transaction yönetimi
- Dependency Injection - Bağımlılık enjeksiyonu
- MVC Pattern - Model-View-Controller
- ✅ Windows 10/11
- ✅ .NET 9.0 SDK
- ✅ Visual Studio 2022 veya VS Code
- ✅ SQL Server Express LocalDB
git clone [repo-url]
cd HarborRestaurantdotnet restoredotnet ef database updatedotnet runHarborlights enterprise-grade performans için optimize edilmiştir:
- Smart Caching: Memory cache, response cache, output cache
- Compression: Brotli & Gzip ile %70 daha küçük dosyalar
- HTTP/2-3: Modern protokol desteği
- Database Optimization: Connection pooling, compiled queries
- Frontend Optimization: Lazy loading, async CSS/JS, critical CSS
- CDN Ready: Statik dosyalar için 1 yıl browser cache
- İlk ziyaret: Normal hız
- Sonraki ziyaretler: %50-80 daha hızlı
- Sayfa boyutu: %60-70 küçülme
- Database yükü: %30-50 azalma
Detaylı performans raporu için: PERFORMANCE_REPORT.md
- Development:
http://localhost:5154(HTTPS yönlendirme Development'ta kapalı) - Production: HTTPS yönlendirme otomatik aktif
- Admin Panel:
http://localhost:5154/Admin
- Varsayılan dil: Türkçe (tr)
- Desteklenen diller: Türkçe (tr), İngilizce (en)
- URL ile geçici değişim:
?culture=enveya?culture=tr - Cookie tabanlı tercih de desteklenir (AspNetCore kültür cookie)
Yöntem 1: Yeni Kayıt
http://localhost:5154/Account/Registeradresine gidin- Formu doldurun
- Otomatik olarak Admin rolü atanır
Yöntem 2: Mevcut Kullanıcıyı Admin Yap
- Bir kullanıcı ile giriş yapın
http://localhost:5154/Admin/Setup/MakeAdminadresine gidin- Kullanıcıya Admin rolü atanır (rol yoksa otomatik oluşturulur)
- Anasayfa: Hero section, özel yemekler, son blog yazıları
- Hakkımızda: Mekan bilgileri ve hikayesi
- Menü: Kategorili yemek listesi, filtreleme
- Rezervasyon: Online masa rezervasyonu
- Odalar: Özel etkinlik alanları
- Blog: Mekan haberleri ve yazıları
- İletişim: İletişim formu ve harita
- Dashboard: İstatistikler, grafikler, özet bilgiler
- Kullanıcı Yönetimi: CRUD işlemleri, rol yönetimi
- Menü Yönetimi: Yemek ve kategori yönetimi
- Rezervasyon Yönetimi: Onay, red, düzenleme
- Masa Yönetimi: Masa kapasitesi, durum yönetimi
- Blog Yönetimi: Yazı ve kategori yönetimi
- İletişim Mesajları: Müşteri mesajlarını görüntüleme
- Sayfa Yönetimi: Dinamik sayfa içerikleri
Not: Backend’i olmayan eski “Ayarlar/Settings” sayfaları kaldırılmıştır.
- SignalR: Gerçek zamanlı bildirimler
- Dosya Yükleme: Resim ve döküman yönetimi
- PDF Raporlama: Rezervasyon, menü raporları
- Excel Raporlama: Veri dışa aktarımı
- QR Kod: Menü için QR kod üretimi
- Çoklu Dil: Türkçe/İngilizce dil desteği
- E-posta: SMTP ile otomatik e-posta gönderimi
- Kaynaklar
Resources/SharedResource.tr.resxveResources/SharedResource.en.resxdosyalarındadır. - Varsayılan kültür Türkçe’dir; URL parametresi ve cookie ile değiştirilebilir.
- Admin panelde içerik girerken İngilizce alanlar desteklenir.
- Otomatik çeviri için MyMemory (ücretsiz) entegrasyonu mevcuttur (ek API anahtarı gerektirmez; ücretsiz limitlere tabidir).
- AspNetUsers: Kullanıcı bilgileri
- MenuCategories: Menü kategorileri
- MenuItems: Yemek öğeleri
- Reservations: Rezervasyonlar
- Tables: Masa bilgileri
- BlogCategories: Blog kategorileri
- BlogPosts: Blog yazıları
- ContactMessages: İletişim mesajları
- HomePages: Anasayfa içerikleri
- Abouts: Hakkımızda sayfa içeriği
- Rooms: Özel alanlar
- Kullanıcılar ↔ Roller (Çoka-Çok)
- Menü Kategorileri ↔ Menü Öğeleri (Bir-Çok)
- Masalar ↔ Rezervasyonlar (Bir-Çok)
- Blog Kategorileri ↔ Blog Yazıları (Bir-Çok)
- Authentication: ASP.NET Identity
- Authorization: Role-based yetkilendirme
- CSRF Protection: Anti-forgery token
- SQL Injection: Entity Framework parameterized queries
- XSS Protection: Razor view encoding
- Mobile First: Mobil cihazlar öncelikli
- Bootstrap Grid: Flexible layout sistemi
- Cross-browser: Tüm modern tarayıcılar
- Touch Friendly: Dokunmatik ekran uyumlu
Proje ilk çalıştırıldığında örnek veriler eklenebilir ve bazı alanlar İngilizce olarak doldurulur (seed mantığı Program.cs içinde korunur):
- Menü kategorileri ve yemekleri
- Blog kategorileri ve yazıları
- Örnek masalar ve odalar
- Development: Geliştirme ortamı
- Production: Canlı ortam
- Staging: Test ortamı
- Async/Await: Asenkron programlama
- Lazy Loading: İhtiyaç anında yükleme
- Caching: Veri önbellekleme
- Compression: Dosya sıkıştırma
- Minification: CSS/JS küçültme
- IIS: Windows sunucu
- Azure App Service: Cloud hosting
- Docker: Container deployment
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=HarborRestaurant;Trusted_Connection=true"
}
}- Merkezi servis:
FileService - Desteklenen uzantılar: .jpg, .jpeg, .png, .gif, .webp
- Maksimum boyut: 5 MB
- Kayıt yeri:
wwwroot/images/{folder}(ör. blog, uploads) - Silme işlemleri
DeleteImageAsyncile yapılır
-
Giriş Yapın
- Admin paneline erişin
- Dashboard'u inceleyin
-
Temel Verileri Ekleyin
- Menü kategorileri oluşturun
- Yemekleri ekleyin
- Masa bilgilerini girin
-
İçerikleri Düzenleyin
- Anasayfa içeriğini güncelleyin
- Hakkımızda sayfasını düzenleyin
- İletişim bilgilerini ekleyin
- Çoklu dil alanlarını (EN) doldurun; müşteri-facing sayfalar dil seçimine göre doğru alanı gösterir
- Blog Yazıları
- Kategoriler oluşturun
- İlk blog yazınızı ekleyin
- Anasayfa: İlk izlenim
- Menü İnceleme: Yemek seçimi
- Rezervasyon: Masa ayırtma
- İletişim: Geri bildirim
1. Veritabanı Bağlantı Hatası
# Çözüm:
dotnet ef database update2. Admin Erişim Sorunu
# Çözüm 1: Yeni kullanıcı kaydı yapın (otomatik admin rolü)
# Çözüm 2: Giriş yapıp /Admin/Setup/MakeAdmin adresine gidin3. NuGet Paket Hatası
# Çözüm:
dotnet clean
dotnet restore
dotnet build4. Otomatik Çeviri Limitleri
MyMemory ücretsiz servistir ve hız/limit kısıtları olabilir. Yoğun kullanımda bekleme ya da manuel çeviri tercih edin.
- Kod içerisinde yeterli yorum satırı eklenmiştir
- Her modül ayrı ayrı test edilmiştir
- Best practice'lere uygun geliştirilmiştir
- Mobil uygulama API'si
- Sipariş takip sistemi
- Online ödeme entegrasyonu
- Sosyal medya entegrasyonu
- ✅ Katmanlı mimari implementasyonu
- ✅ Design pattern kullanımı
- ✅ Modern web teknolojileri
- ✅ Responsive tasarım
- ✅ Güvenlik best practice'leri
- ✅ Gerçek dünya problemi çözümü
- ✅ Kullanıcı dostu arayüz
- ✅ Ölçeklenebilir yapı
- ✅ Maintainable kod
Bu proje eğitim amaçlı geliştirilmiştir. Ticari kullanım için gerekli lisanslar alınmalıdır.
Proje Tarihi: Ağustos 2025
Versiyon: 1.0.0
Framework: ASP.NET Core MVC 9.0
Bu README dosyası projenin tüm özelliklerini, kurulum adımlarını ve kullanım kılavuzunu içermektedir. Herhangi bir sorun yaşadığınızda bu dokümana başvurabilirsiniz.