This repository contains a project built using the Clean Architecture pattern. Clean Architecture is an architectural approach that promotes separation of concerns and maintainability by structuring applications into distinct layers with well-defined responsibilities.
Overview
The project is structured into several layers, each with its own set of responsibilities:
- Domain Layer: Contains the core business logic and domain entities of the application. It is independent of any external frameworks or libraries.
- Application Layer: Implements use cases and orchestrates the flow of data between the domain layer and the infrastructure layer. It is responsible for business logic implementation and interacts with external systems via interfaces.
- Infrastructure Layer: Provides implementations for interacting with external systems such as databases, web services, or external APIs. It contains concrete implementations of repositories, data access objects, and other infrastructure concerns.
- Presentation Layer: Handles user interface logic and presentation concerns. This can include web controllers, API endpoints, or UI components in a desktop or mobile application.
Project Structure
The application follows the Clean Architecture pattern and is divided into four layers:
- Application Layer: Contains DTOs, configurations, Helper Classes, interfaces, and services.
- Presentation Layer: Contains the MVC controllers and views.
- Core Layer: Contains the entities and enums.
- Infrastructure Layer: Contains the database context, repositories, and UnitOfWork implementation.
- Repository Pattern: To encapsulate the logic for accessing the data source.
- UnitOfWork: To manage database transactions and coordinate the work of multiple repositories.
- Service Layer: To encapsulate the business logic of the application and Mapping.
- AutoMapper: For object-object mapping between DTOs and entities.
Getting Started
-
Clone the Repository: git clone https://github.com/ReemOsama30/GiveHubAPI.git
-
Install Dependencies: cd clean-architecture-project dotnet restore
-
Build the Project: dotnet build
-
Run the Application: dotnet run --project src/Presentation/Presentation.csproj
- Reem Osama.
- Maria Ezzat.
- Sarah Sameh.
- Seravia samuel.
- Caroline Emad.
- Nabila Nabil.
- Youstina Emad. Contributions are welcome! Please read the CONTRIBUTING.md file for guidelines.
License
This project is licensed under the MIT License.