A robust and modern Course Management System built with Laravel. It features a fully-responsive, custom RTL dark-themed administrative dashboard for web users, alongside a rich set of REST APIs for mobile or client-side applications.
To dive deeper into the technical specifics of this system, refer to the following guides:
- 📡 REST API Reference: Request bodies, response schemas, and authentication endpoints.
- 🗄️ Database Design & ERD: Data dictionaries, schema tables, relations, and ER diagrams.
- 🏗️ Application Architecture: MVC layer separation, controllers logic, security, and authentication details.
- Analytics & Overview: Interactive dashboard cards displaying counts of users, courses, categories, instructors, notifications, certificates, and ratings.
- User Management: Control administrator, instructor, and student accounts.
- Course & Category Catalog: Create, read, update, and delete courses and their respective categories.
- Certificate Issuance: Issue and attach PDF/file certificates to students who complete courses.
- Rating Monitoring: Track feedback and reviews for both instructors and courses.
- Dynamic Notifications: Send direct target notifications to users.
- Authentication:
Register,Login,Logout, andProfile (me)endpoints. - Category & Course Discovery: Filter courses by category and view details.
- Ratings & Reviews: Query aggregate review scores for both courses and instructors.
- Personalized Notifications: Fetch user notifications and mark them as read.
- Framework: Laravel 12.x
- Frontend Styling: Custom Dark Modern CSS + Bootstrap v5.3.7 (RTL Layout) & Tailwind CSS v4.0
- Bundler & Tools: Vite 7.x & Laravel Vite Plugin
- Database: MySQL / MariaDB (Eloquent ORM)
- APIs: Laravel Router (JSON responses with Sanctum authentication support)
erDiagram
User ||--o{ Certificate : receives
User ||--o{ Rating : gives
User ||--o{ Notification : receives
Category ||--o{ Course : contains
Instructor ||--o{ Course : teaches
Course ||--o{ Certificate : awards
Course ||--o{ Rating : has
Instructor ||--o{ Rating : has
| Model | Table | Key Fields | Description |
|---|---|---|---|
User |
users |
name, email, role, phone |
Handles authentication and roles (admin, instructor, student). |
Category |
categories |
name, description, cat_cover |
Educational domains/tracks. |
Instructor |
instructors |
name, email, bio, image, phone |
Profiles of professional instructors. |
Course |
courses |
title, description, cover, price, start_date |
Main training courses linked to category & instructor. |
Certificate |
certificates |
user_id, course_id, certificate_file, issued_at |
Verified course completion records. |
Rating |
ratings |
user_id, course_id, instructor_id, rating |
Feedback system for courses and instructors. |
Notification |
notifications |
title, message, is_read, user_id |
User alert and messaging system. |
Follow these steps to set up and run the project locally.
- PHP >= 8.2
- Composer
- Node.js & NPM
- XAMPP / WampServer (MySQL)
-
Clone the Repository
git clone https://github.com/mubarak-saeed/tech_course_dashboard.git cd tech_course_dashboard -
Install Dependencies
composer install npm install
-
Configure Environment Variables Copy the example environment file:
cp .env.example .env
Open
.envand set your database connection details:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=tec_course_dashbourd DB_USERNAME=root DB_PASSWORD=
-
Generate Application Key
php artisan key:generate
-
Run Migrations & Seed Database Note: Make sure your MySQL server is running and the database
tec_course_dashbourdis created.php artisan migrate --seed
Or run manually:
php artisan migrate php artisan db:seed
-
Start Development Server
php artisan serve
Open your browser and navigate to
http://127.0.0.1:8000.
To log into the dashboard:
- Email:
admin@admin.com - Password:
12541254
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/register |
Register a new user account |
POST |
/api/login |
Login and receive API token |
POST |
/api/logout |
Revoke current token |
GET |
/api/me/{id} |
Get authenticated user info |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/categories |
Retrieve all categories |
GET |
/api/courses |
List all courses with ratings |
GET |
/api/courses/category/{category_id} |
List courses by category |
GET |
/api/ratings/course/{courseid} |
Get course rating statistics |
GET |
/api/ratings/instructor/{instructorid} |
Get instructor rating statistics |
GET |
/api/notifications/{userid} |
Retrieve user notifications |
PUT |
/api/notifications/{userid} |
Update notifications state (Read/Unread) |
This project is licensed under the MIT License. Feel free to use and modify.