- ASP.NET Core MVC
- Entity Framework Core
- Identity
- Razor/Tag Helpers
- EF Core, code first yaklaşımı
- CRUD
- Dependency Injection
- View Models
- Migration
ENVENT goes beyond a classic event listing application. It is a secure, performance-oriented, and modern Event Management & Ticketing Platform designed with enterprise scalability in mind.
Although developed as a final project for the Web Programming course at Sakarya University, its architecture, design patterns, and advanced optimizations are modeled after real-world SaaS products.
Core Philosophy: Not just "making it work," but applying Clean Architecture, SOLID principles, and Scalability from end to end.
- Register and Login pages
[Authorize]attribute usage- Rol bazlı yetkilendirme:
[Authorize(Roles = "Admin")][Authorize(Roles = "organizer")]
- Yetkisiz erişimler için
AccessDeniedsayfası
- Tüm varlıklar için Entity sınıfları
DbContextyapılandırması- İlişkiler:
- One-to-Many (Category → Event)
- Many-to-Many (User ↔ Event)
- EF Core Migrations kullanımı
- MVC mimarisi (Model – View – Controller)
- Repository Pattern
- Dependency Injection
- ViewModel / DTO kullanımı
- Overposting saldırılarına karşı koruma
- Category, Event, Venue için tam CRUD
- Data Validation:
[Required],[StringLength]asp-validation-forile hata gösterimi
- Sık kullanılan veriler RAM üzerinde cache’lenmiştir
- Veritabanı sorgu sayısı azaltılmıştır
- Daha hızlı sayfa yükleme süreleri
- AI kullanılarak resim ve açıklama ekleme
- Kullanıcıya özel QR kod üretimi
- Benzersiz ve anlık oluşturma
- Sahte bilet riskinin önlenmesi
- Admin panelinde zengin metin düzenleme
- HTML destekli etkinlik açıklamaları
- Silme / güncelleme / hata bildirimleri
- Modern pop-up geri bildirimler
- Arka planda çalışan job’lar
- Google Mail entegrasyonu
- Otomatik mail gönderimi
- API dokümantasyonu
- Test edilebilir uç noktalar
- Etkinlik mekanlarının harita üzerinde gösterimi
- Three.js destekli 3D animasyonlar
- Modern UI/UX yaklaşımı
- Admin dashboardına dinamik ajax kullanılarak chart.js kullanarak güzel bir tasarım
- Bu elde edilen görseller excele kayıt edilerek indirilme özelliği
ENVENT, Clean Architecture prensipleri esas alınarak geliştirilmiştir:
- Katmanlar arası gevşek bağlılık (Loose Coupling)
- Separation of Concerns
- Test edilebilir ve sürdürülebilir yapı
WebProgramlama/
├── 📂 Core
│ └── 📂 Interfaces # Soyutlama Katmanı
│ ├── IGenericRepository.cs
│ ├── IEventRepository.cs
│ └── IUnitOfWork.cs
│
├── 📂 Controllers # İş Mantığı (Business Logic)
│ ├── HomeController.cs # (Caching ve MiniProfiler burada)
│ ├── EventController.cs # (Etkinlik işlemleri)
│ ├── CategoryController.cs # (Admin Kategori yönetimi)
│ ├── VenueController.cs # (Mekan yönetimi)
│ ├── AdminController.cs # (Dashboard işlemleri)
│ └── AccountController.cs # (Login/Register/Logout)
│
├── 📂 Data
│ ├── 📂 Migrations # Veritabanı versiyon takibi
│ └── AppDbContext.cs # EF Core Context Ayarları
│
├── 📂 Models # Veritabanı Varlıkları (Entities)
│ ├── Event.cs # (Etkinlik Tablosu)
│ ├── Category.cs # (Kategori Tablosu)
│ ├── Venue.cs # (Mekan Tablosu)
│ ├── UserEvent.cs # (Many-to-Many Ara Tablo)
│ └── ApplicationUser.cs # (IdentityUser Genişletmesi)
│
├── 📂 Repositories # Veri Erişim Katmanı (Repository Pattern)
│ ├── GenericRepository.cs
│ └── EventRepository.cs
│
├── 📂 Services # Yardımcı Servisler
│ └── RoleSeedService.cs # (Otomatik Veri ve Admin Oluşturma)
│
├── 📂 ViewModels # Veri Transfer Nesneleri (DTOs)
│ ├── EventViewModel.cs
│ ├── RegisterViewModel.cs
│ └── LoginViewModel.cs
│
└── 📂 Views # Arayüz Dosyaları (Razor Views)
├── 📂 Account
│ ├── Login.cshtml
│ ├── Register.cshtml
│ ├── Profile.cshtml
│ ├── ChangePassword.cshtml
│ └── AccessDenied.cshtml
│
├── 📂 Admin
│ ├── Index.cshtml # (Admin Dashboard)
│ ├── Dashboard.cshtml # chart.js ajax kullanımı dinamik görüntü
│ └── Users.cshtml
│
├── 📂 Category
│ ├── Index.cshtml # (Listeleme)
│ ├── Create.cshtml # (Ekleme Formu)
│ ├── Edit.cshtml # (Düzenleme Formu)
│ ├── Detail.cshtml
│ └── Delete.cshtml # (Silme Onayı)
│
├── 📂 Event
│ ├── Index.cshtml
│ ├── Details.cshtml # (QR Kod burada gösterilir)
│ ├── Create.cshtml # (TinyMCE burada çalışır)
│ ├── Edit.cshtml
│ ├── Calendar.cshtml
│ ├── Payment.cshtml
│ ├── Participants.cshtml
│ └── Events.cshtml
│
├── 📂 Venue
│ ├── Index.cshtml
│ └── Create.cshtml
│
├── 📂 Home
│ ├── Index.cshtml # (3D Arka Plan ve Kartlar)
│ └── Wrapped.cshtml
└── 📂 Shared
├── _Layout.cshtml # (Navbar ve Footer)
└── _ValidationScriptsPartial.cshtml
Uygulama ilk kez çalıştırıldığında sistem otomatik olarak:
- Admin kullanıcısı
- Roller
- Kategoriler
- Mekanlar
- Örnek etkinlikler
oluşturur.
-
Email: [admin@gmail.com]
-
Şifre: Admin123!
-
Email: [organizer@gmail.com]
-
Şifre: organizer123!
Projeyi yerel ortamınızda ayağa kaldırmak için aşağıdaki adımları sırasıyla uygulayınız:
Gereksinimler
-
.NET 8.0 SDK (veya güncel LTS sürümü)
-
MS SQL Server (LocalDB kullanılabilir)
Projenin İndirilmesi*
- git clone [https://github.com/SauWebProgramming/web-programming-project-2025-enesimo16]
- cd WebProgramlama
Veritabanının Oluşturulması Proje Code-First yaklaşımıyla geliştirilmiştir. Veritabanı tablolarını ve şemasını SQL Server üzerinde oluşturmak için Terminal (veya Package Manager Console) üzerinden şu komutu çalıştırın:
- dotnet ef database update
- (Not: Bu komut, Migrations klasöründeki yapılandırmaları okuyarak veritabanını otomatik olarak oluşturacaktır.)
Uygulamanın Başlatılması
dotnet run
Otomatik Veri (Seeding) Mekanizması
- Uygulama ilk kez çalıştığında RoleSeedService devreye girerek; gerekli Admin ve Organizer hesaplarını, rolleri, kategorileri ve örnek Şener Şen temalı etkinlikleri veritabanına otomatik olarak yükleyecektir. Herhangi bir manuel SQL kaydı oluşturmanıza gerek yoktur.
- ASP.NET Core MVC mimarisinin derinlemesine kullanımı
- EF Core Code First yaklaşımı
- Repository Design Pattern
- Identity & Security best practices
- Performans optimizasyonu
- Gerçek dünya projelerine yakın mimari deneyimi
- Geliştirici: Enes Yel
- Öğrenci No: B231200053
- Bölüm: Bilişim Sistemleri Mühendisliği
- Üniversite: Sakarya Üniversitesi
ENVENT, bir ders projesinden çok daha fazlası: Modern, güvenli ve ölçeklenebilir bir etkinlik yönetim vizyonu.