TicketSystem is a backend application for managing support tickets, designed with Clean Architecture principles to ensure clarity, maintainability, and scalability.
The project follows the CQRS (Command Query Responsibility Segregation) pattern, separating commands from queries to simplify development and long-term maintenance.
The solution is organized into four main layers:
-
Core
Contains domain entities, interfaces, and business logic. Independent from frameworks and external dependencies. -
Application
Implements the CQRS pattern with commands and queries. Holds DTOs and application-specific logic. -
Infrastructure
Handles database access using Entity Framework Core combined with the Repository Pattern. Implements interfaces defined in the Core layer. -
API
Exposes system functionality through REST controllers, enabling communication with clients.
- .NET (C#)
- Entity Framework Core – ORM for database operations
- PostgreSQL – relational database running on Docker
- Docker – containerized database deployment
- CQRS – separation of read and write logic
- Repository Pattern – abstracted data access
- DTOs – structured data transfer between layers
- Azure DevOps Pipelines – CI/CD, monitoring, and automated deployments
- Ubuntu – Linux operating system
- Visual Studio Code – Lightweight code editor
TicketSystem/
│
├── src/
│ ├── TicketSystem.Core/ # Domain layer
│ ├── TicketSystem.Application/ # CQRS, DTOs
│ ├── TicketSystem.Infrastructure/ # EF Core, repositories
│ └── TicketSystem.API/ # Controllers, REST API
│
├── tests/
│ └── TicketSystem.Tests/ # Unit and integration tests
│
└── azure-pipelines.yml # CI/CD pipeline configuration
│
└── Docker-compose.yml # Docker PostgreSQL contenerization
-
Clone the repository
git clone https://github.com/YourAccount/TicketSystem.git cd TicketSystem -
Apply database migrations
dotnet ef database update --project src/TicketSystem.Infrastructure
-
Run the API
dotnet run --project src/TicketSystem.API

