Skip to content

Ticket sales back office app built with .NET 6, ASP.NET Core 6 Web API and Blazor WebAssembly following Clean Architecture

Notifications You must be signed in to change notification settings

danradic/eTicketManagement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eTicketManagement

This is a real-world ticket sales back office application built with ASP.NET Core 6 Web API and Blazor WebAssembly as the UI and consumer of the API. Using an Onion Architecture aka Clean Architecture based on architectural principles, the end goal is to have a testable and maintainable application architecture.

Solution structure

Architecture overview

With Onion Architecture aka Clean Architecture, the Domain and Application layers are at the center of the design. This is known as the Core of the system.

The Domain layer contains enterprise logic and types and the Application layer contains business logic and types. The Core shouldn’t be dependent on concerns such as Persistence (Data Access) and Infrastructure, so we invert those dependencies. Therefore, Infrastructure and Presentation depend on the Core.

This is achieved by adding interfaces and abstractions within Core, which are implemented by layers outside Core such as Infrastructure.

All dependencies flow inwards, and Core has no dependencies on any other layers. Infrastructure and Presentation depend on Core, but not on one another.

The architecture is based on the following architectural principles:

  • Separation of concerns
  • Dependency Inversion
  • Single Responsibility
  • DRY
  • Persistence Ignorance

This results in a design that is:

  • Independent of UI, databases, frameworks
  • Clean, maintainable, testable
  • The difference between an application that will last 3 years and an application that will last 20 years

Goal

  • Have a solid foundation for future projects

Technologies

  • ASP.NET Core 6 Web API
  • Blazor WebAssembly
  • Onion Architecture
  • CQRS with MediatR
  • Fluent Validation
  • Automapper
  • Feature‑based folder organization
  • Entity Framework Core - Code First
  • Repository Pattern
  • Serilog
  • Swagger UI
  • NSwag client code generation
  • Response wrappers
  • Pagination
  • In-Memory Database for Integration Tests
  • Microsoft Identity with JWT Authentication
  • Database Seeding
  • Custom Exception Handling Middlewares
  • Sendgrid Email Service
  • Register / Login & Generate Token

Resources

Suggestions for Improvement?

Please raise a bug or feature request.

About

Ticket sales back office app built with .NET 6, ASP.NET Core 6 Web API and Blazor WebAssembly following Clean Architecture

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published