Skip to content

Amjad-Hamidi/TMS-Amjad-Hadeel-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

114 Commits
 
 
 
 
 
 

Repository files navigation

TMS – Training Management System

Efficiently manage training programs, trainees, supervisors, and companies

image

React Vite Material-UI .NET LINQ Entity Framework SQL Server

A web platform to manage training programs, trainees, supervisors, and companies with modern UI/UX and robust backend.


Table of Contents


Project Overview

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.

image

Key Features

Administrator

  • Manage users (Supervisor, Trainee, Company)
  • Assign/change roles
  • Program and category management
  • Overview of statistics and reports
  • Bulk delete management with safeguards

Supervisor

  • Manage assigned training programs
  • Track trainee progress
  • Communicate with trainees
  • Provide feedback on sessions
  • View program details

Trainee

  • Enroll in approved programs
  • Track progress by category
  • Build CVs with TMS CV Builder
  • Chat with TMS Chatbot
  • Receive feedback from supervisors

Company

  • Post training programs
  • Assign supervisors to programs
  • View trainees who enrolled
  • Track program progress
  • Manage company profile

Trainee Applies to Training Program Sequence Diagram

Trainee Applies to Training Program Sequence Diagram


System Architecture

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

Design Patterns & SOLID Principles

Service Layer with Interface

// 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();
        }
    }
}

SOLID Examples

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();
    }
}

Built With

Frontend

  • 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

Backend

  • ASP.NET Core 9.0.0
  • Entity Framework Core 9.0.8
  • SQL Server 2022
  • Identity + JWT Authentication
  • SignalR (for real-time feedback)
  • FluentValidation

Additional Modules

  • TMS CV Builder (Upload CV, Images, Videos)
  • TMS Chatbot (AI assistant for trainees)
  • Feedback System (Supervisor <-> Trainee communication)

Project Structure

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

User Roles

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

UI Prototypes

  • Login & Registration
  • Dashboard (Admin / Supervisor / Trainee / Company)
  • Program Management & Supervisor Assignment
  • Trainee Enrollment & Feedback
  • CV Builder & Chatbot interfaces

Add screenshots for full demonstration.


Development Team

Role Name Contribution
Team Lead + Frontend & Backend Developer Amjad Hamidi Full-stack development, architecture, API & UI
Frontend Developer Hadeel Hamdan React UI, pages, components

APIs Documentation & Project Demo


© 2025 TMS. All rights reserved.
Built with ❤️ by Amjad Hamidi & Hadeel Hamdan

Releases

No releases published

Packages

 
 
 

Contributors