This system aims to enhance training management and communication between trainers and trainees within the company. It includes multiple interfaces to meet the needs of different users, such as trainers, trainees, and administrative supervisors (admins). The system features an easy-to-use interface and advanced functionalities to ensure a smooth and effective training experience.

User Management: Admins can add, edit, or delete users including trainers and students. This feature allows for efficient management of user roles and ensures that the right individuals have access to the appropriate resources. Training Areas Management: Admins can create and manage different training areas, ensuring that all training programs are organized and easily accessible.
Resource Management: Trainers can add and update training materials, such as documents, links, and multimedia resources. This ensures that students have access to the most current and relevant materials for their learning. Task Creation and Assessment: Trainers can create tasks and assessments that students need to complete, along with the ability to provide feedback and grades. This feature fosters accountability and encourages student engagement.
User Authentication: Students can securely log in to their accounts to access personalized content and resources. This promotes a safe and secure environment for learning. Task Management: Students can receive, manage, and submit tasks through the platform, making it easier to track their progress and deadlines. This feature enhances organization and time management skills.
User Registration: New users can easily register for an account, ensuring a smooth onboarding process. Password Recovery: Users who forget their passwords can reset them easily, maintaining accessibility while ensuring security.
Profile Information: Each user has a profile containing basic information such as full name, email, phone number, profile picture, and social media links (GitHub/LinkedIn). This allows for personalized interactions and connections among users. Field of Training: Trainees can specify their training areas, while trainers can indicate their specialties. This feature helps in matching students with appropriate training programs and resources.
Clean Architecture
It achieves this by separating the application into different layers that have distinct responsibilities:
Contains the core business logic and domain entities. This layer is independent of other layers and focuses on the business rules and domain models.
- Entities: Represent the core data models. For example, User, Role, Trainer, Trainee, Task.
- Value Objects: Define immutable objects used within the domain. For example, Address, Money.
- DTOs (Data Transfer Objects): Define the data structures used for communication between the application layer and the API layer. For example, UserDto, TaskDto.
- Domain Repository: Implement business logic that does not naturally fit within an entity. For example, FeedBackRepository.
Provides implementations for data access, external services, and other system-level concerns. This layer interacts with databases, file systems, and external APIs.
- Repositories: Implement data access logic and interact with the database. For example, UserRepository, TaskRepository.
- Data Context: Manages database connections and operations. For example, AppDbContext.
- Configurations: Manage configurations for external services and data access.
Orchestrates the application's workflow, coordinates interactions between domain models and infrastructure, and handles application-specific logic.
- Services: Implement application-specific logic and use domain services and repositories to perform operations. For example, UserService, TaskService.
- Application Interfaces: Define contracts for services and repositories. For example, IUserService, ITaskService.
- External Services: Handle interactions with third-party services. For example, image storage services, payment gateways.
Exposes endpoints for client interaction and handles HTTP requests and responses. This layer is responsible for routing, validation, and transforming data between the application layer and clients.
- Controllers: Handle incoming HTTP requests, invoke application services, and return responses. For example, UserController, FeedBackController.
- Middlewares: Implement cross-cutting concerns such as authentication, authorization, and logging.
- Response Handlers: Standardize API responses and error handling. For example, ResponseHandler.
Ensuring code quality and functionality with comprehensive testing suites using:

In the TMS Platform, several design patterns are employed to ensure a clean, maintainable, and scalable architecture. Hereβs a summary of the key patterns used:
The Unit of Work pattern is used to manage changes to multiple entities in a single transaction. This pattern ensures that changes to the database are handled in a single unit, maintaining data consistency and integrity.

The Generic Repository pattern provides a way to manage CRUD operations in a consistent and reusable manner. This pattern abstracts the data access layer and provides a generic implementation for common operations.

git clone [https://github.com/Leen-odeh3/Travel-and-Accommodation-Booking-Platform.git](https://github.com/GSG-FinalProject/Training-Management-System-BackRepo)
cd Training-Management-System-BackRepo
Open the appsettings.json
file located in your project directory and configure the connection string for SQL Server.
Replace the <connection_string>
placeholder with your SQL Server connection string:
"ConnectionStrings": {
"SqlServer": "<connection_string>"
}
}
This project is developed by an amazing team :
You can view the proposal document
Market Ready Developer Training Program.pdf
I extend my sincere gratitude to Gaza sky Geeks for granting me the opportunity to participate in this internship during the Market Ready Developer Training program . Their unwavering support has been instrumental throughout the development of this project.
Special thanks to those who provided mentorship to Saad Haroub, Osaid Makhalfih, Amin Eid, and Aseel Issa for their contributions to the success of this project.