Bu proje, ASP.NET Core ve MongoDB kullanarak geliştirmiş olduğum kapsamlı bir Full Stack Restoran Yönetim Sistemidir. Projem fiziksel olarak tek katmanlı bir yapıda olsa da, Clean Code prensiplerine sadık kalarak mantıksal katmanlara (Entities, DTOs, Services, Managers) ayrılmıştır. Veri tutarlılığı ve kodun sürdürülebilirliği için Repository Design Pattern ve validasyon yapıları kullandım.
Projede modüler, genişletilebilir ve temiz bir kod yapısı hedeflenmiştir.
| Kategori | Teknoloji / Kütüphane | Kullanım Amacı |
|---|---|---|
| Framework | ASP.NET Core 10.0 | Ana uygulama çatısı |
| Veritabanı | MongoDB | NoSQL veri depolama |
| ORM / Desen | Repository Pattern | Veri erişim soyutlaması |
| Mapping | AutoMapper | Entity ve DTO nesne eşlemeleri |
| Validasyon | FluentValidation | Sunucu taraflı veri doğrulama |
| İletişim | MailKit (SMTP/IMAP) | Mail gönderme ve okuma (Inbox/Sent) |
| Güvenlik | Cookie Authentication | Admin paneli giriş güvenliği |
| Sayfalama | PagedList | Veri listeleme performansı |
| Frontend | HTML5, CSS3, Bootstrap | Kullanıcı arayüzü tasarımı |
- Repository Design Pattern: Veritabanı işlemlerini soyutlayarak kod tekrarını önledim ve test edilebilirliği artırdım.
- Service Layer: Her varlık (Entity) için ayrı servisler (örneğin;
ProductService,CategoryService) yazarak iş mantığı controller'dan ayrıştırdım. - DTO (Data Transfer Objects):
Result,CreateveUpdateişlemleri için ayrı DTO'lar kullanılarak veri güvenliğini sağladım. - ViewComponents & Partial Views: UI kod tekrarını önlemek ve temiz bir HTML yapısı için component bazlı geliştirme yaptım.
- Dependency Injection: Bağımlılıkları yönetmek ve gevşek bağlı bir yapı kurmak için aktif olarak kullandım.
- Menü ve Ürünler: Kategorize edilmiş menü, ürün detayları, fiyatlar ve içerik bilgileri.
- Etkileşim: Kullanıcılar ürünlere yorum yapabilir ve yıldız (rating) verebilir.
- Blog: Restoran ile ilgili haberler ve makaleler (Yorum yapma özelliği ile).
- Rezervasyon: Müşteriler online masa rezervasyonu oluşturabilir.
- İletişim & Bülten: İletişim formu ve e-bülten aboneliği.
- Şefler: Mutfak ekibi ve şef detay sayfaları.
- Dashboard: Anlık istatistikler, metrikler ve özet veriler.
- Ürün Yönetimi: Ürün ekleme, silme, güncelleme, kategori yönetimi ve ürün yorumlarını denetleme.
- Rezervasyon Yönetimi: Gelen rezervasyonları görüntüleme, onaylama veya iptal etme (Bekleyen/Onaylanan/İptal).
- Gelişmiş Mesajlaşma Sistemi:
- SMTP & MailKit Entegrasyonu: Admin paneli üzerinden sadece mail gönderme değil, gelen mailleri okuma (Inbox), giden kutusu ve yıldızlı mesajlar gibi özellikler bir webmail istemcisi gibi çalışır.
- İçerik Yönetimi: Blog yazıları, şefler, referanslar, galeri, tanıtım videoları ve özel tekliflerin yönetimi.
- Ayarlar: SMTP ayarları ve Dark Mode (Karanlık Mod) desteği.
- Güvenlik: Cookie tabanlı güvenli giriş sistemi.
Proje yapısı mantıksal ayrımı net bir şekilde yansıtmaktadır:
MongoDB-RestaurantProject
├── Areas (Admin Paneli)
├── Context (Veritabanı Modelleri ve Veritabanı Bağlantısı)
├── Services (İş Mantığı Katmanı)
├── DTOs (Data Transfer Objects)
├── Extensions (Program.cs için extension metotları)
├── FluentValidation (Doğrulama Kuralları)
├── Mapping (AutoMapper Profili)
├── ViewComponents (UI Bileşenleri)
├── Controllers
└── Views
Aşağıda kullanıcı arayüzüne ait sayfa görüntüleri kategorilere ayrılmış şekilde listelenmiştir.