Skip to content

Repository files navigation

SkillHub Certification - Course Management System

Laravel Logo

Laravel Version PHP Version License

πŸ“‹ About Project

SkillHub Certification is a course and participant management system built using Laravel 12. This project was created to fulfill certification requirements and demonstrate proficiency in:

  • Web application development using Laravel framework
  • Implementation of MVC (Model-View-Controller) pattern
  • Database management with Eloquent ORM
  • Application testing with PestPHP
  • CRUD operations implementation
  • Model relationships (Many-to-Many)

Main Features

✨ Participant Management

  • Create, Read, Update, Delete participants
  • Complete information: name, email, phone, address

✨ Course Management

  • Create, Read, Update, Delete courses
  • Course details: name, instructor, description, duration

✨ Enrollment Management

  • Enroll participants to courses
  • Many-to-Many relationship between participants and courses
  • View enrollment list with participant and course details
  • Unenroll participants from courses

πŸ›  Technologies Used

  • Framework: Laravel 12.0
  • PHP: 8.2+
  • Database: MySQL/PostgreSQL/SQLite
  • Testing: PestPHP 4.1
  • Frontend: Blade Templates, Vite
  • CSS Framework: Bootstrap/Tailwind (optional)

πŸ“¦ Installation

Prerequisites

Make sure your system has installed:

  • PHP 8.2 or higher
  • Composer
  • Node.js & NPM
  • Database (MySQL/PostgreSQL/SQLite)

Installation Steps

  1. Clone repository
git clone https://github.com/LouisFernando1204/skillhub-certification.git
cd skillhub-certification
  1. Install dependencies
composer install
npm install
  1. Setup environment
cp .env.example .env
php artisan key:generate
  1. Database configuration

Edit .env file and adjust database configuration:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=skillhub_certification
DB_USERNAME=root
DB_PASSWORD=
  1. Run migrations

You have two options to set up the database:

Option A: Using Migrations (Recommended for Development)

php artisan migrate

Option B: Import SQL File (Quick Setup with Sample Data)

If you prefer to use the provided SQL dump with sample data:

# For MySQL
mysql -u root -p skillhub_certification < skillhub_certification.sql

# Or using phpMyAdmin: Import the skillhub_certification.sql file

The SQL file (skillhub_certification.sql) includes:

  • βœ… Complete database structure with all tables and foreign keys
  • βœ… Sample participants data (3 participants)
  • βœ… Sample courses data (3 courses)
  • βœ… Sample enrollments data (4 enrollments)
  • βœ… Ready-to-use data for testing and demonstration
  1. Build assets
npm run build
  1. Run application
php artisan serve

Application will run at http://localhost:8000

πŸ—„ Database Structure

The database structure is defined in migrations and also available as a SQL dump file (skillhub_certification.sql).

Participants Table

  • id: Primary Key
  • name: Participant name
  • email: Participant email (unique)
  • phone: Phone number
  • address: Address
  • created_at, updated_at: Timestamps

Courses Table

  • id: Primary Key
  • name: Course name
  • instructor: Instructor name
  • description: Course description
  • duration: Course duration (in hours)
  • created_at, updated_at: Timestamps

Course_Participant Table (Pivot Table)

  • id: Primary Key
  • participant_id: Foreign Key to participants (CASCADE on delete/update)
  • course_id: Foreign Key to courses (CASCADE on delete/update)
  • created_at, updated_at: Timestamps

Sample Data

The provided SQL file includes sample data:

Participants:

Courses:

  • Pemrograman Web Dasar (20 hours) - Instructor: Eko Kurniawan
  • Desain Grafis Kreatif (15 hours) - Instructor: Dodi Mulyadi
  • Digital Marketing Mastery (25 hours) - Instructor: Andri Wongso

Enrollments:

  • Budi Santoso enrolled in: Pemrograman Web Dasar, Digital Marketing Mastery
  • Siti Aminah enrolled in: Desain Grafis Kreatif
  • Reza Rahadian enrolled in: Pemrograman Web Dasar

πŸ”— Endpoint Routes

Participants

  • GET /participants - List all participants
  • GET /participants/create - Add participant form
  • POST /participants - Save new participant
  • GET /participants/{id} - Participant details
  • GET /participants/{id}/edit - Edit participant form
  • PUT /participants/{id} - Update participant
  • DELETE /participants/{id} - Delete participant

Courses

  • GET /courses - List all courses
  • GET /courses/create - Add course form
  • POST /courses - Save new course
  • GET /courses/{id} - Course details
  • GET /courses/{id}/edit - Edit course form
  • PUT /courses/{id} - Update course
  • DELETE /courses/{id} - Delete course

Enrollments

  • GET /enrollments - List all enrollments
  • GET /enrollments/create - New enrollment form
  • POST /enrollments - Save enrollment
  • DELETE /enrollments/{id} - Delete enrollment

πŸ§ͺ Testing

This project uses PestPHP for testing. To run tests:

# Run all tests
php artisan test

# or use pest directly
./vendor/bin/pest

# Run tests with coverage
php artisan test --coverage

Test Coverage

Available tests:

  • βœ… Course CRUD operations
  • βœ… Participant CRUD operations
  • βœ… Enrollment operations
  • βœ… Model relationships
  • βœ… Validation rules

πŸ“ Project Structure

app/
β”œβ”€β”€ Http/
β”‚   └── Controllers/
β”‚       β”œβ”€β”€ CourseController.php
β”‚       β”œβ”€β”€ ParticipantController.php
β”‚       └── EnrollmentController.php
β”œβ”€β”€ Models/
β”‚   β”œβ”€β”€ Course.php
β”‚   β”œβ”€β”€ Participant.php
β”‚   └── CourseParticipant.php
β”‚
database/
β”œβ”€β”€ migrations/
β”‚   β”œβ”€β”€ 2025_11_22_044027_create_courses_table.php
β”‚   β”œβ”€β”€ 2025_11_22_044027_create_participants_table.php
β”‚   └── 2025_11_22_099999_create_course_participants_table.php
β”‚
resources/
β”œβ”€β”€ views/
β”‚   β”œβ”€β”€ courses/
β”‚   β”œβ”€β”€ participants/
β”‚   β”œβ”€β”€ enrollments/
β”‚   └── layouts/
β”‚
tests/
β”œβ”€β”€ Feature/
β”‚   β”œβ”€β”€ CourseTest.php
β”‚   β”œβ”€β”€ ParticipantTest.php
β”‚   └── EnrollmentTest.php

🎯 Implemented Features

1. CRUD Operations

  • βœ… Create, Read, Update, Delete for Participants
  • βœ… Create, Read, Update, Delete for Courses
  • βœ… Create, Read, Delete for Enrollments

2. Database Relations

  • βœ… Many-to-Many relationship between Courses and Participants
  • βœ… Eloquent ORM for query optimization

3. Validation

  • βœ… Form validation for all inputs
  • βœ… Email unique validation
  • βœ… Required field validation

4. Testing

  • βœ… Unit tests for models
  • βœ… Feature tests for controllers
  • βœ… Test coverage for critical paths

πŸ‘¨β€πŸ’» Developer

Louis Fernando

About

Course Management System built with Laravel 12 for web development certification. Features participant management, course enrollment, and comprehensive testing.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages