Refactor the entire codebase to improve maintainability and simplify the addition of new features. The rework should include:
- Splitting the application into four projects:
- API: Responsible for handling incoming requests and providing responses.
- Infrastructure: Contains implementation details such as database access, external services, etc.
- Application: Manages the business logic and application workflows.
- Domain: Defines the core domain models and business rules.
- Adopting Pragmatic Clean Architecture principles to create a clear separation of concerns and better project reference management.
- Implementing Vertical Slices to ensure each feature is self-contained and modular.
- Using CQRS to separate read and write operations for better scalability and clarity.
Refactor the entire codebase to improve maintainability and simplify the addition of new features. The rework should include: