This Architecture promotes a clear separation of concerns by dividing the system into layers, each with its own responsibility. However, rather than using a traditional layered approach, we'll focus on a component-based structure where each component adheres to SOLID principles and can operate independently. The architecture consist of the following layers:
- **Components**: Business components
- **Presentation**: UI components and Angular services.
## Architecture Layers

### Components

Components are the core business logic units in the application. The components are divided into two sub-layers:
**Domain Layer**
- Contains business logic and rules.
- Models the business entities.
- Does not depend on the data layer or any other external services.
**Data Layer**
- Responsible for data access and persistence.
- Contains repositories or data services that interact with APIs or databases.
- Isolated from the domain layer to ensure a clear separation of concerns.
### Presentation

The presentation layer is responsible for the user interface and interactions. It consists of Angular UI components and services:
## File Structure Explanation
The project is divided into several key sections, each serving a specific purpose:
**Source Code (src)**
- **common**: Shared utilities such as decorators, interceptors, and guards.
-**core**: Business Object divided by features to store shared entity, use case and repository interface
-**infra**: Infrastructure code such as storage, HTTP clients, and logging.
In this setup, the Event Component functionalities are reusable without any dependency on UI details. If the product team introduces create-event functionality in the Gabinete screen, the Event Component module can be added as a dependency to the Gabinete UI module seamlessly.

## Conclusion
This file structure supports Clean Architecture by ensuring a clear separation of concerns and adhering to SOLID principles. Each part of the application is modular, making it easy to maintain, test, and extend. This setup promotes a clean and organized project that scales well as complexity grows.