A multi-role Learning Management System supporting Admin, Trainer, Student, and Finance portals — built for managing course delivery, live classes, quizzes, coding challenges, internships, and payments end to end.
- Multi-role access: separate dashboards for Admin, Trainer, Student, and Finance
- Course management: course creation, syllabus uploads, lesson delivery, and enrollment tracking
- Live classes & scheduling: trainers can schedule and manage live sessions
- Assessments: quizzes, coding challenges, and progress tracking per student
- Certificates: automated certificate generation and verification
- Payments: course/internship/project payment tracking with finance reporting
- Authentication: standard login plus Google OAuth sign-in
- Notifications: in-app notification system for role-based updates
| Layer | Technology |
|---|---|
| Backend | PHP, MySQLi |
| Frontend | HTML, CSS, JavaScript |
| Database | MySQL |
| Auth | Google OAuth 2.0 |
| SMTP (PHPMailer-style setup) |
admin/ Admin dashboard — courses, users, payments, verification
trainer/ Trainer dashboard — lessons, quizzes, live classes
student/ Student dashboard — courses, assignments, certificates
finance/ Finance dashboard — payments, revenue reports
api/ REST-style endpoints (enrollment, certificates)
internship/ Internship registration & payment flows
fdp/ Faculty Development Program registration
includes/ Shared components (mailer, OAuth, sidebar, header)
config/ Database & environment configuration
assets/ CSS/JS/images
schema.sql Database schema (structure only, no data)
- PHP 8+
- MySQL Server
- Apache/Nginx (or XAMPP for local dev)
- A Google Cloud OAuth 2.0 Client (for Google Sign-In)
git clone https://github.com/Vishwas7975/CourseFlow-LMS
cd CourseFlow-LMSCREATE DATABASE courseflow_lms;Then import the schema:
mysql -u your_db_username -p courseflow_lms < schema.sqlUpdate config/db.php with your database credentials:
$conn = new mysqli("localhost", "your_db_username", "your_db_password_here", "courseflow_lms");Update config/secrets.php with your own SMTP and Google OAuth credentials:
define('VS_SMTP_HOST', 'your-smtp-host');
define('VS_SMTP_USER', 'your-email@yourdomain.com');
define('VS_SMTP_PASS', 'your_smtp_password_here');
define('VS_GOOGLE_CLIENT_ID', 'your-google-client-id.apps.googleusercontent.com');
define('VS_GOOGLE_CLIENT_SECRET', 'your-google-client-secret');
define('VS_GOOGLE_REDIRECT_URI', 'https://yourdomain.com/google_callback.php');Never commit real credentials. Keep config/secrets.php out of version control in your own deployments (add it to .gitignore).
Point your web server's document root to the project folder or use PHP's built-in server for local testing:
php -S localhost:8000This is a portfolio version of a production LMS — sample configuration values are used throughout, and the included schema.sql contains table structure only (no real user data).
This project is shared publicly for portfolio and demonstration purposes.
All rights are reserved by the author. No permission is granted to copy, modify or redistribute this project without prior written permission.