Skip to content

Latest commit

 

History

History
138 lines (107 loc) · 6.95 KB

README.md

File metadata and controls

138 lines (107 loc) · 6.95 KB

Review Assignment Due Date


259 Simpra Net Bootcamp Final Projesi

Proje kapsamında sadece dijital ürünler satan bir platform geliştirilmesi beklenmektedir. Hedefimiz Mobil ve web uygulaması olmak üzere 3 farklı kanal üzerinden satış yapan bir platform için uygulama geliştirmektir. ( Android,IOS,Web).

Proje kapsamında dijital ürün veya ürün lisansları satışı yapılmaktadır. Kullanıcılar dijital ürün veya ürün lisansları satan sisteme kayıt yaptırarak alışveriş yapabilirler.

Sadakat sistemi ile çalışan bu sistemde kullanıcılar alışveriş yaptıkça extra puan kazanmaktadır.

Kullanıcılar kazandıkları puanları bir sonraki alışverişte kullanarak yeni ürünleri indirimli bir şekilde alabilmektedirler. Bununla birlike kupon sistemi sayesinde hediye kuponlar ile sepet tutarı üzerinden daha uygun fiyatlı alışveriş yapabilmektedir.

Kullanılan Teknolojiler

Proje Yapısı

Proje aşağıdaki bileşenlere ayrılmıştır:

  • API: Web API katmanı, HTTP isteklerini karşılar ve yanıtlar.
    • Controllers: API isteklerini karşılayan controller sınıflarını içeren klasördür.
    • Extensions: API katmanı için extension metodları içeren klasördür.
    • logs: Proje içerisinde oluşan logların tutulduğu klasördür.
    • serilog.json: Serilog ayarlarının tutulduğu yapılandırma dosyasıdır.
  • Application: Uygulama katmanı, API ile UI/CLI arasındaki iletişimi sağlar ve iş mantığını yönetir.
    • Contracts: Uygulama katmanı için contract sınıflarını içeren klasördür.
      • Constants: Uygulama katmanı için sabitleri içeren klasördür.
      • Mapper: AutoMapper konfigürasyonlarını içeren klasördür.
      • Repositories: Repository arayüzlerini içeren klasördür.
      • Requests: İstek modellerini içeren klasördür.
      • Responses: Yanıt modellerini içeren klasördür.
      • Services: İş sınıfları için arayüzleri içeren klasördür.
      • Validations: Fluent Validation doğrulama kurallarını içeren klasördür.
    • Services: İş sınıflarını içeren klasördür.
    • ApplicationExtensions.cs: Uygulama katmanı için extension metodları içeren sınıftır.
  • Core: Çekirdek katmanı, tüm katmanlar tarafından kullanılan temel bileşenleri içerir.
    • Application: Uygulama katmanı için temel bileşenleri içeren klasördür.
    • CrossCuttingConcerns: Harici bileşenlerle ilgili temel bileşenleri içeren klasördür.
    • Domain: Veritabanı nesneleri için temel bileşenleri içeren klasördür.
    • Persistence: Veritabanı katmanı için temel bileşenleri içeren klasördür.
    • Utilities: Yardımcı bileşenleri içeren klasördür.
    • CoreExtensions.cs: Çekirdek katmanı için extension metodları içeren sınıftır.
  • Domain: Veritabanı nesnelerini içeren klasördür.
    • Entities: Veritabanı nesnelerini içeren klasördür.
    • Enums: Veritabanı nesneleri için enumları içeren klasördür.
  • Infrastructure: Altyapı katmanı, harici bileşenlerle ilgili bileşenleri içerir.
    • Notification: Harici bildirim bileşenlerini içeren klasördür.
    • Payment: Harici ödeme bileşenlerini içeren klasördür.
    • InfrastructureExtensions: Altyapı katmanı için extension metodları içeren sınıftır.
  • Notification.Consumer: RabbitMQ üzerinden gelen bildirimleri dinleyen konsol uygulamasıdır.
  • Persistence: Veritabanı katmanı, veritabanı işlemlerini yönetir.
    • Contexts: Veritabanı nesnelerinin DbContext sınıflarını içeren klasördür.
    • EntityConfigurations: Veritabanı nesnelerinin yapılandırma sınıflarını içeren klasördür.
    • Migrations: Veritabanı nesneleri için migration dosyalarını içeren klasördür.
    • Repositories: Veritabanı nesneleri için repository sınıflarını içeren klasördür.
    • PersistenceExtensions: Veritabanı katmanı için extension metodları içeren sınıftır.

Projenin testleri aşağıdaki bileşenlere ayrılmıştır:

  • Application.Tests: Uygulama katmanı testleri.
    • Extensions: Uygulama katmanı testleri için extension metodları içeren klasördür.
    • Mocks: Uygulama katmanı testleri için mock bileşenleri içeren klasördür.
    • Services: Uygulama katmanı testleri için iş sınıflarını içeren klasördür.
  • Core.Tests: Çekirdek katmanı testleri.
    • Utilities: Çekirdek katmanındaki yardımcı sınıfların testlerini içeren klasördür.

🔒Varsayılan Admin Giriş Bilgileri :

{
  "email": "admin@system.com",
  "password": "1234"
}

Postman Koleksiyonu

Run in Postman

Kurulum

Repository'yi klonlayın

git clone https://github.com/P259-Simpra-NET-Bootcamp/final-BerkayMehmetSert.git

Bağımlılıkları yükleyin

dotnet restore

Veritabanını oluşturun (MsSQL)

dotnet ef database update

Docker Compose ile RabbitMQ ve Redis servislerini çalıştırın

⚠️Not: Projede bildirimler varsayılan olarak RabbitMQ ile çalışmaktadır. Eğer RabbitMQ yerine Konsol uygulaması kullanmak isterseniz PaymentService.cs içerisindeki NotificationType değişkenini NotificationType.Console olarak değiştirmeniz yeterlidir.

⚠️Not: Proje varsayılan olarak Redis cache ile çalışmaktadır. Eğer Redis yerine InMemoryCache kullanmak isterseniz CartService.cs ve CouponService.cs içerisindeki CacheType değişkenini CacheType.Memory olarak değiştirmeniz yeterlidir.

docker-compose up -d

Projeyi çalıştırın

⚠️Not: Projeyi çalıştırırken Notification.Consumer projesininde çalıştığından emin olun.

dotnet run