A web platform to manage training programs, trainees, supervisors, and companies with modern UI/UX and robust backend.
- Project Overview
- Key Features
- System Architecture
- Design Patterns & SOLID Principles
- Built With
- Project Structure
- User Roles
- UI Prototypes
- Development Team
- APIs Documentation & Project Demo
TMS – Training Management System manages trainees, supervisors, companies, and training programs. It provides:
- TMS CV Builder: Trainees can create professional CVs using templates, upload images, and videos.
- TMS Chatbot: AI-assisted assistant for navigation, guidance, and FAQs.
- Feedback System: Supervisors can provide feedback on trainee performance, and trainees can respond or request clarification.
- Company Supervision Assignment: Companies can assign supervisors to specific programs.
The system ensures role-based access, scalable architecture, and a clean separation of concerns following SOLID principles and Service Layer architecture.
- Manage users (Supervisor, Trainee, Company)
- Assign/change roles
- Program and category management
- Overview of statistics and reports
- Bulk delete management with safeguards
- Manage assigned training programs
- Track trainee progress
- Communicate with trainees
- Provide feedback on sessions
- View program details
- Enroll in approved programs
- Track progress by category
- Build CVs with TMS CV Builder
- Chat with TMS Chatbot
- Receive feedback from supervisors
- Post training programs
- Assign supervisors to programs
- View trainees who enrolled
- Track program progress
- Manage company profile
Frontend (React + Material-UI)
- Components, pages, layouts, hooks, services, utils
- Responsive UI
- Material-UI for design
- SweetAlert2 & Swiper for interactive components
Backend (ASP.NET Core 9 + EF Core 9)
- Controllers: Handle HTTP requests
- Services (Service Layer): Implements business logic through interfaces
- DTOs: For request/response consistency
- Models/Entities: Represent database tables
- Helpers/Validations: File handling, custom validators
- Middleware: Authentication, error handling
- Identity + JWT: Role-based security
Database
- SQL Server 2022
- EF Core migrations
- Entities: Users, Companies, Supervisors, Trainees, Programs, Categories, Enrollments, Feedback
// Interface
public interface IProgramService
{
void CreateProgram(CreateProgramDto dto);
IEnumerable<ProgramDto> GetAllPrograms();
void AssignSupervisor(int programId, int supervisorId);
}
// Implementation (DI & Single Responsibility)
public class ProgramService : IProgramService
{
private readonly AppDbContext _context;
public ProgramService(AppDbContext context)
{
_context = context;
}
public void CreateProgram(CreateProgramDto dto)
{
var entity = new TrainingProgram { Name = dto.Name, CategoryId = dto.CategoryId };
_context.Programs.Add(entity);
_context.SaveChanges();
}
public IEnumerable<ProgramDto> GetAllPrograms()
{
return _context.Programs.Select(p => new ProgramDto { Id = p.Id, Name = p.Name }).ToList();
}
public void AssignSupervisor(int programId, int supervisorId)
{
var program = _context.Programs.Find(programId);
if(program != null)
{
program.SupervisorId = supervisorId;
_context.SaveChanges();
}
}
}| Principle | Implementation | Code Example |
|---|---|---|
| S – Single Responsibility | ProgramService only manages programs | See ProgramService above |
| O – Open/Closed | Add new notification type without modifying service | class EmailNotificationService : INotificationService |
| L – Liskov Substitution | IProgramService can be replaced |
ProgramService or MockProgramService |
| I – Interface Segregation | IProgramService only has program methods |
Only program-related methods |
| D – Dependency Inversion | Controller depends on interface, not implementation | ProgramController uses IProgramService |
// Controller uses DI with interface
[ApiController]
[Route("api/[controller]")]
public class ProgramController : ControllerBase
{
private readonly IProgramService _service;
public ProgramController(IProgramService service)
{
_service = service;
}
[HttpPost]
public IActionResult Create(CreateProgramDto dto)
{
_service.CreateProgram(dto);
return Ok();
}
[HttpPost("{programId}/assign/{supervisorId}")]
public IActionResult AssignSupervisor(int programId, int supervisorId)
{
_service.AssignSupervisor(programId, supervisorId);
return Ok();
}
}- React 19.0.0
- Material-UI 7.1.0
- React Router DOM 7.6.0
- SweetAlert2 11.21.2
- Swiper 11.2.7
- jwt-decode 4.0.0
- ASP.NET Core 9.0.0
- Entity Framework Core 9.0.8
- SQL Server 2022
- Identity + JWT Authentication
- SignalR (for real-time feedback)
- FluentValidation
- TMS CV Builder (Upload CV, Images, Videos)
- TMS Chatbot (AI assistant for trainees)
- Feedback System (Supervisor <-> Trainee communication)
TMS/
├── TMS.API/
│ ├── Controllers/
│ ├── DTOs/
│ ├── Data/
│ ├── Helpers/
│ ├── Middlewares/
│ ├── Migrations/
│ ├── Models/
│ ├── Services/ # Service Layer with interfaces
│ ├── Validations/
│ ├── wwwroot/ # Images, videos, CV uploads
│ ├── Program.cs
│ └── appsettings.json
├── Front Work/
│ ├── public/
│ ├── src/
│ │ ├── layouts/
│ │ ├── pages/
│ │ ├── components/
│ │ ├── utils/
│ │ ├── hooks/
│ │ ├── services/
│ │ └── assets/ # CV images, videos, icons
│ ├── index.js
│ └── package.json
└── README.md
| Role | Responsibilities |
|---|---|
| Admin | Manage users (Admin, Supervisor, Trainee, Company), programs, categories, stats |
| Supervisor | Manage assigned programs, provide feedback to trainees, track trainee progress |
| Trainee | Enroll in programs, track progress, receive feedback, use CV Builder and Chatbot |
| Company | Post programs, assign supervisors, view enrolled trainees, track program progress, manage company profile |
- Login & Registration
- Dashboard (Admin / Supervisor / Trainee / Company)
- Program Management & Supervisor Assignment
- Trainee Enrollment & Feedback
- CV Builder & Chatbot interfaces
Add screenshots for full demonstration.
| Role | Name | Contribution |
|---|---|---|
| Team Lead + Frontend & Backend Developer | Amjad Hamidi | Full-stack development, architecture, API & UI |
| Frontend Developer | Hadeel Hamdan | React UI, pages, components |
- Scalar Documentation: TMS API Docs
- Frontend Demo: TMS Frontend Demo
Built with ❤️ by Amjad Hamidi & Hadeel Hamdan
