!
Bu proje, ASP.NET Core 8 MVC platformunda, yüksek mimari kalitede, tüm zorunlu üniversite (ISE309) gereksinimlerini ve genişletilmiş bonus özellikleri karşılayacak şekilde geliştirilmiştir. Projenin temel amacı, kullanıcıların ikinci el ürünlerini güvenli ve kolay bir şekilde listeleyebildiği bir platform sunmaktır.
Shahryar Hayati B231200563
Proje, Temiz Kod (Clean Code) prensiplerine uygun olarak katmanlı mimari ile tasarlanmıştır.
- Platform: ASP.NET Core 8 MVC mimarisi kullanılmıştır.
- Kimlik (Identity): ASP.NET Core Identity (Kayıt, Giriş, Şifre sıfırlama, Email doğrulama) uygulanmıştır.
- Yetkilendirme: Rol bazlı yetkilendirme (→ Admin ve User rolleri) eksiksizdir.
- Veritabanı: Entity Framework Core Code-First yaklaşımı ve Migrations kullanılmıştır.
- DI (Bağımlılık Enjeksiyonu): Tüm servisler ve repository'ler Scoped olarak enjekte edilmiştir.
- Repository Pattern: Genel CRUD işlemleri için Generic Repository yapısı kurulmuştur.
- Özel Repository'ler:
ProductRepositoryveCategoryRepositorygibi Entity'lere özel ek metotlar tanımlanmıştır. - ViewModel (DTO): View'lara veri taşımak için ViewModel kullanımı zorunludur.
- Doğrulama: Data Annotations ile kapsamlı doğrulama ve Tag Helpers ile hata mesajı gösterimi.
- Tasarım: Bootstrap 5 ile responsive, modern kart tasarımı.
- Servisler: Resim yükleme & eski resmi silme (
IImageServiceilewwwroot/images/productsklasörü yönetimi). - Geri Bildirim: TempData ile başarılı/uyarı mesajları.
(Sadece Admin rolüne sahip kullanıcılar bu işlevlere erişebilir.)
- Kategori Yönetimi: Kategori CRUD (Ekle/Düzenle/Sil/Listele) işlemleri.
- Ürün Yönetimi: Sistemdeki tüm ürünleri denetleme, onaylama veya silme imkânı.
- Kullanıcı Yönetimi: Kullanıcı listesini görüntüleme, hatalı hesapları silme veya askıya alma.
- Rol Atama: Kullanıcılara Admin veya User yetkisi tanımlama.
- Şifre Sıfırlama: Şifresini unutan veya erişim sorunu yaşayan kullanıcılar için manuel şifre sıfırlama desteği.
- İstatistik Paneli: Toplam kullanıcı, kategori ve ürün sayılarını içeren basit özet ekranı.
- İlan Yönetimi: Kullanıcılar kendi ürünlerini ekle, düzenle ve sil yetkisine sahiptir.
- İlan Oluşturma: Resim yükleyerek ürün ilanı oluşturma.
- Listeleme: Ana sayfada tüm aktif ürünleri kartlarla görüntüleme.
- Özel Sayfa: Kendi ilanlarım sayfası.
Projenin akademik kalitesini ve işlevselliğini artıran ek geliştirmeler:
| Özellik Adı | Açıklama | Uygulama |
|---|---|---|
| Arama & Filtreleme | Ürün başlığına göre arama ve kategori bazlı filtreleme işlevi (Home/Search). |
Genişletilmiş CRUD |
| Gelişmiş Detay | Ürün detay sayfası (Home/Details). |
Genişletilmiş CRUD |
| Kod Temizliği | StringExtensions ile açıklama metni kısaltma (truncate) ve ImageService gibi temiz yardımcı sınıflar. | Clean Code |
| Veritabanı Başlangıcı | 5 adet hazır kategori (Elektronik, Ev Eşyası, Giyim, Kitap, Spor) seed data olarak eklenmiştir. | EF Core Seed |
| Otomatik Admin | Uygulama ilk çalıştığında otomatik olarak Admin hesabı seed edilir. | EF Core Seed |
Projeyi test etmek için kullanılabilecek otomatik oluşturulmuş hesaplar:
| Rol | Ad Soyad | E-posta | Şifre |
|---|---|---|---|
| Admin | - | admin@secondhand.com |
Admin123! |
| Kullanıcı | Shahryar Hayati | shahryar.hayati@gmail.com |
Shahryar123 |
Tip
Not: Shahryar Hayati hesabı kullanıcı rolüyle tanımlıdır. Diğer kullanıcılar kayıt formunu kullanarak kendi hesaplarını oluşturabilirler.
Bu proje ASP.NET Core MVC kullanılarak geliştirilmiştir ve veritabanı işlemleri için Entity Framework Core (Code-First) yaklaşımı kullanılmaktadır. Projeyi çalıştırmadan önce bilgisayarınızda MS SQL Server LocalDB kurulu olmalıdır.
Projeyi sorunsuz bir şekilde çalıştırabilmek için aşağıdaki bileşenlerin sistemde kurulu olması gerekmektedir:
- Windows 10 / 11
- Visual Studio 2022
- .NET 7 veya .NET 8
- MS SQL Server LocalDB
Projeyi çalıştırmak için, proje klasöründe (yani .csproj dosyasının bulunduğu dizinde) bir terminal açarak aşağıdaki komutları sırasıyla çalıştırmanız yeterlidir:
# Veritabanını oluşturur ve günceller (Tüm Migration ve Seed Data'ları içerir)
dotnet ef database update
# Uygulamayı çalıştırır
dotnet run