This project is a Leave Management System built using .NET 7, following SOLID principles and Clean Architecture. It aims to provide a robust, scalable, and maintainable solution for managing employee leaves.
- User authentication and authorization
- Employee management
- Leave request management
- Approval workflow for leave requests
- Comprehensive data validation
- Role-based access control
- RESTful API endpoints
- Unit and integration testing
- Getting Started
- Prerequisites
- Installation
- Usage
- Architecture
- Technologies Used
- Contributing
- License
To get a local copy of the project up and running, follow these steps.
-
Clone the repository:
git clone https://github.com/your-username/leave-management-system.git cd leave-management-system
-
Restore dependencies:
dotnet restore
-
Apply database migrations:
dotnet ef database update
-
Build the project:
dotnet build
-
Run the application:
dotnet run
- Access the API documentation at
http://localhost:5000/swagger
- Use Postman or any other API client to interact with the endpoints
- Create, update, delete, and manage employees and leave requests
This project follows the Clean Architecture principles, ensuring a clear separation of concerns and promoting maintainability.
- Domain Layer: Contains the core business logic and domain entities
- Application Layer: Contains application-specific logic, use cases, and services
- Infrastructure Layer: Contains data access logic, external service integrations, and other infrastructure-related concerns
- Presentation Layer: Contains the API controllers and presentation logic
- .NET 7: Framework for building the application
- Entity Framework Core: ORM for database interactions
- SQL Server: Database management system
- ASP.NET Core: Framework for building web APIs
- XUnit: Testing framework for unit and integration tests
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature
) - Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/your-feature
) - Open a pull request