Code Monkey home page Code Monkey logo

onionarchitecture's Introduction

E-Commerce Application

  • Gençay Yıldız'ın "Asp.NET Core 6 + Angular 13 | Mini E-Ticaret Uygulama Serisi" adlı video serisi takip edilerek geliştirilen e-ticaret kurgulu bir ASP.NET Core Web API tüketen Angular uygulamasıdır.
  • Çalışma devam etmektedir. (54/59)

csharp dotnetcore mssql angular typescript

Fundamentals

  • Microsoft SQL Server
  • Onion Architecture
  • CQRS Pattern
  • Mediator Behavioral Design Pattern
  • Specification Design Pattern
  • Entity Framework Core 6
  • Microsoft.AspNetCore.Identity Library
  • Microsoft.AspNetCore.Authentication.JwtBearer Library
  • Optimal Generic Repository Design Pattern
  • HttpClient Service
  • Seed Datas
  • MediatR Library
  • FluentValidation Library
  • MediatR Pipeline Behaviour
  • Global Excaption Handler
  • AutoMapper Library
  • Table Per Hierarchy Approach
  • Azure Blob Storage
  • Angular Reactive Forms
  • Angular Route Guards
  • Http Interceptor To Catch Errors
  • Refresh Token Configuration
  • Logging With Serilog
  • SignalR

İzlence

  • Onion Architecture kullanıldı.
  • Gerçek hayattaki nesnelerin birer modellemeleri olan yazılımdaki Class'ları ilişkisel bir veri tabanının tablo ve sütunlarına eşlemeyi basitleştiren bir Nesne İlişkisel Eşleyici olan Entity Framework Core kullanıldı.
  • IEntityTypeConfiguration Interface'leri ile veri tabanı konfigürasyonları sağlandı.
  • Domain katmanında yer alan Entity'ler için abstract bir base sınıf kullanıldı.
  • Optimal Generic Repository Design Pattern kullanıldı.
  • EF Core Tracking Performans Optimizasyonu sağlandı.
  • Ekleme ve güncelleme işlemleri yaparken bu işlemlerin yapılış tarihlerini kaydetmeyi otomatik hale getiren isteğe uyarlanmış SaveChangeAsync yazıldı.
  • Kendi API'miz ve Angular uygulamamız arasında iletişimi sağlamak adına bir sunucunun default olarak sahip olduğu same-origin-policy politikasını gevşetmesine izin veren ve bir W3C standardı olan Cross Origin Resource Sharing izinleri sağlandı.
  • Client'ımızın bir başka uç noktayla (endpoint) iletişim kurması ve url üzerinden bu noktaya Http istekleri atabilmesini sağlayan özelleştirilmiş bir HttpClient Servis yazıldı.
  • Veri tabanı tohumlandı.
  • Mapping işlemleri için AutoMapper Kütüphanesi kullanıldı.
  • 'Command' ve 'Query' sorumluluklarının ayrılması prensibini esas alan CQRS Pattern projeye entegre edildi.
  • Tek bir aracı nesnesi içerisinde çeşitli nesneler arasındaki karmaşık ilişkiler ağını yönetmenize olanak tanıyan Mediator Behavioral Design Pattern projeye entegre edildi.
  • Mediator Behavioral Design Pattern'ı uygulamamıza olanak tanıyan MediatR Kütüphanesi projeye entegre edildi.
  • Hem API hem de Client tarafında ürün ekleme işlemi gerçekleştirildi.
  • API tarafında FluentValidation kütüphanesi entegre edildi.
  • Fluent doğrulama hataları ürün ekleme formunda olası hataları yakalamak üzere Client tarafına taşınarak kullanıcıya gösterildi.
  • Bir request nesnesi doğrulanmak istendiğinde direkt geçersiz verilerle MediatR kütüphanesinin handler sınıflarına girmeyerek bu doğrulamayı daha önce kontrol etmeye yarayan MediatR Pipeline Behaviour entegre edildi.
  • Uygulama içindeki exception'larımızı merkezi bir konumdan yönetebilmemizi sağlayan ve bir middleware olan Global Excaption Handler middleware'i entegre edildi.
  • Sorgulama, sıralama ve sayfalama mantığının nereye yerleştirileceği sorununa bir Domain-Driven-Design tasarım çözümü olan Specification Design Pattern projeye entegre edildi.
  • 50'den fazla farklı 'loading spinners' içeren bir kitaplık olan ngx-spinner projeye entegre edildi.
  • Specification Design Pattern kullanılarak hem API hem de Client tarafında sayfalama, isim ve fiyat değerlerine göre sıralama ve marka-renk-beden değerlerine göre filtreleme işlemleri tamamlandı.
  • Bütün delete operasyonlarında kullanılabilecek custom bir directive olan DeleteDirective yazıldı.
  • Bütün dosya yükleme işlemlerinde kullanılabilecek servis mantığında çalışacak bir FileUploadComponent yazıldı.
  • Bütün diyalog pencerelerinde kullanılabilecek bir servis olan DialogService yazıldı.
  • Kaydedilecek dosyaların isimleri SEO standartlarına uygun olarak manipüle edildi.
  • Veri tabanında tutacağımız dosya bilgileri Table Per Hierarchy yaklaşımı ile tasarlandı.
  • Dosya yönetimi için Storage Altyapısı hazırlandı.
  • Dosya yönetimi için Azure Blob Storage projeye entegre edildi.
  • Ürünlere ait resim listeleme, ekleme ve silme işlemleri tamamlandı.
  • Kimlik Doğrulama ve Yetkilendirme işlemlerini yönetebilmek için Microsoft.AspNetCore.Identity ve Microsoft.AspNetCore.Authentication.JwtBearer Kütüphaneleri projeye entegre edildi.
  • Kimlik Doğrulama işlemleri tamamlandı.
  • Haberleşen iki veya daha fazla sistem arasında kullanıcı doğrulama ve veri bütünlüğünü sağlayabilmek adına JSON Web Token kullanıldı.
  • Angular uygulamasında bir rotanın etkinleştirilip etkinleştirilemeyeceğine karar veren ve bir route guard görevi gören CanActivate Interface'i projeye entegre edildi.
  • Kimlik doğrulaması yapılarak buton ve link gösterme/gizleme işlemleri tamamlandı.
  • Doğrulanmamış bir kimlikle giriş işlemlerinde girilmek istenen url yakalandı ve login işleminden sonra kullanıcı o url'e yönlendirildi.
  • !: Ürün ekleme işleminde Client tarafında ayrıca doğrulama kuralları henüz yazılmadı ilerleyen günlerde yazılacaktır.
  • !: Ürün ekleme işleminde kullanılan form ilerleyen günlerde "reactive forms" kullanımına geçirilecektir.

onionarchitecture's People

Contributors

enesozmus avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

elshanmov

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.