The User Data Control System is an application that allows efficient and secure management of user information. It offers various features to facilitate data management, making it a powerful solution for companies and organizations that need to control user information in an organized and accessible manner.
- User Registration: Administrators can add new users to the system, providing essential information such as name, last name, email address, phone number, etc.
- User Authentication: To make any modifications to the data, logging in is required, ensuring the security of the information.
- Data Search: Users can search for specific information in the database, allowing quick and precise retrieval of desired information.
- Advanced Filtering: The system provides advanced filtering options to refine search results, such as registration dates, user categories, etc.
- Data Update: Administrators can update user information, ensuring that the data remains accurate.
- PDF Generation: A powerful feature is the ability to generate reports in PDF format containing user data, making it easy to share and print important information.
- To begin using the User Data Control System, follow these steps:
- Clone the repository or download the project.
- Install the necessary dependencies using [Insert dependency installation instructions].
- Configure the database with the appropriate information.
- Start the application server using [Insert startup command].
- Access the system in your web browser and begin exploring the features.
Clean architecture is a concept proposed by Robert C. Martin in his book "Clean Architecture" as a way to build highly flexible and sustainable software solutions. The concept is based on best practices of hexagonal and onion architecture, among others, which already proposed the separation of responsibilities in layers and aims to produce systems with the following characteristics:
- Independent of framework
- Testable
- Independent of the user interface
- Independent of the database
- Independent of any external agent
- Domain: This layer is responsible for all your entities, enumerations, exceptions, abstractions (such as interfaces), types, and domain-specific logic.
- Application: This layer is responsible for all the application's logic. It depends on the domain layer but has no dependencies on any other layer or project. This layer describes abstractions that are implemented in outer layers. If you need to implement data access, such as using Entity Framework, the implementation would be located outside this layer (in infrastructure), but the abstraction would be implemented here.
- Infrastructure: This layer is responsible for containing classes that access resources external to our application, such as web services, emails, or even file access. These classes should implement abstractions from the application layer.
- User Interface (UI): This layer is responsible for the user interface. In this project's case, we have a simple example using Angular 8 and ASP.NET Core 3. This layer depends on the application and infrastructure layers, but any dependency coming from the infrastructure is only for dependency injection.
- ControlPersonalData.API: Controllers, Models
- ControlPersonalData.Application: Application domain rules, mappings, services, DTOs
- ControlPersonalData.Domain: Domain model, business rules, and interfaces
- ControlPersonalData.Infra.Data: EF Core, Context, Configurations, Migrations, and Repository
- ControlPersonalData.Infra.IoC: Dependency injection, service registrations
- ControlPersonalData.Tests: Unit test
- ControlPersonalData.Domain: Has no dependencies
- ControlPersonalData.Application: Dependency on the Domain
- ControlPersonalData.Infra.Data: Dependency on the Domain
- ControlPersonalData.Infra.IoC: Dependency on the Domain, Application, and Infra.Data
- ControlPersonalData.API: Dependency on Infra.IoC
- ControlPersonalData.Tests: Dependency on Infra.Data and Domain