A role-based Intern Management System built as a web application during an internship with KAAC. The system helps manage the complete internship workflow, including intern registration, application review, task assignment, multi-level approvals, and certificate processing.
Platform: Web Application
This project is the web version of the Intern Management System. It is designed for organizations that need a structured way to manage interns, departments, approvals, submitted tasks, and internship completion certificates.
The application includes separate dashboards for each user role, allowing interns and administrative users to access only the features relevant to their responsibilities.
- Intern registration and login
- Email verification using OTP
- Password reset with OTP verification
- Role-based access control
- Separate dashboards for interns, admins, sub-admins, moderators, and super admins
- Internship application submission with resume upload
- Department-based internship request management
- Multi-level approval and rejection workflow
- Task assignment and task submission tracking
- Uploaded task file management
- Certificate request and approval workflow
- Automatic certificate ID generation through database trigger logic
- Department management with logo upload
- Profile management with photo, resume, and signature uploads
- Email notifications using PHPMailer
- Spreadsheet support using PhpSpreadsheet
| Role | Description |
|---|---|
| Intern | Applies for internships, updates profile details, submits assigned tasks, and requests certificates. |
| Moderator | Reviews internship requests and task submissions at the moderator level. |
| Sub-admin | Reviews and manages internship workflows after moderator review. |
| Admin | Handles department-level approvals, task decisions, and certificate approval. |
| Super admin | Manages higher-level administrative operations and system oversight. |
| Layer | Technology |
|---|---|
| Frontend | HTML, CSS, JavaScript, Bootstrap |
| Backend | PHP |
| Database | MySQL / MariaDB |
| Package Manager | Composer |
| Mail Service | PHPMailer |
| Spreadsheet Library | PhpSpreadsheet |
| QR Code Library | phpqrcode |
.
|-- api/ # API endpoints and backend helpers
|-- assets/ # Dashboard and theme assets
|-- assets2/ # Landing page assets
|-- auth/ # Authentication, OTP, mail, session, and certificate files
|-- dashboard/ # Role-based dashboard pages
| |-- admin/
| |-- intern/
| |-- moderator/
| |-- subadmin/
| `-- super_admin/
|-- layouts/ # Shared layout components
|-- pages/ # Additional pages
|-- uploads/ # Uploaded resumes, photos, logos, signatures, and task files
|-- vendor/ # Composer dependencies
|-- index.html # Public landing page
|-- composer.json # PHP dependency configuration
|-- internship.sql # Main database dump
`-- internship2.sql # Additional database/user seed dump
- PHP 8.1 or later recommended
- MySQL or MariaDB
- Composer
- Apache or another PHP-supported web server
- XAMPP, WAMP, Laragon, or a similar local server environment
Required PHP extensions may include:
pdo_mysqlmbstringxmlzipgd
-
Move the project folder into your web server directory.
Example for XAMPP:
C:\xampp\htdocs\internship -
Install Composer dependencies.
composer install
-
Create a MySQL database.
CREATE DATABASE internship CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-
Import the main database file.
mysql -u root -p internship < internship.sqlYou can also import
internship.sqlmanually using phpMyAdmin. -
Configure the database connection in
auth/config.php.$host = 'localhost'; $db = 'internship'; $user = 'root'; $pass = ''; define('BASE_URL', 'http://localhost/internship');
-
Configure email settings in
auth/mail_config.php.Replace the SMTP username, password, sender email, and sender name with your own email account details. If you use Gmail, create an app password and use that instead of your normal account password.
-
Start Apache and MySQL.
-
Open the application in your browser.
http://localhost/internship/
| Page | Route |
|---|---|
| Landing page | /index.html |
| Sign in | /auth/signin.php |
| Sign up | /auth/signup.php |
| Dashboard router | /dashboard/index.php |
| Intern dashboard | /dashboard/intern/index.php |
| Admin dashboard | /dashboard/admin/index.php |
| Sub-admin dashboard | /dashboard/subadmin/index.php |
| Moderator dashboard | /dashboard/moderator/index.php |
| Super admin dashboard | /dashboard/super_admin/index.php |
The main database file is internship.sql. It creates the core tables used by the application:
usersdepartmentinternshiprequestassignmentscertificateotp_verificationsessionssession_for_passwordchange
The database dump also includes indexes, foreign key relationships, seed data, and a certificate trigger for generating certificate IDs when certificates are approved.
internship2.sql contains an additional small database/user seed dump. The current application configuration points to the internship database, so internship.sql should be treated as the primary database file.
The application stores uploaded files in the following folders:
uploads/resume/uploads/photo/uploads/tasks/uploads/logos/uploads/admin_sign/
Make sure these directories exist and are writable by the web server.
Before deploying the project, review the following:
- Replace local database credentials in
auth/config.php. - Replace SMTP credentials in
auth/mail_config.php. - Do not commit real passwords, app passwords, or production credentials.
- Update
BASE_URLto match the live domain. - Remove unnecessary test users, sessions, OTP records, uploaded files, and sample data.
- Use HTTPS in production.
- Validate and restrict uploaded file types and file sizes.
- Keep Composer dependencies updated.
If the database connection fails, check auth/config.php, confirm that MySQL is running, and verify that the internship database exists.
If email verification does not work, check the SMTP configuration in auth/mail_config.php and confirm that your mail provider allows SMTP access.
If uploaded files are not saved, confirm that the required folders inside uploads/ are present and writable.
If a user is redirected to logout, confirm that the user is logged in, the email is verified, and the user role is one of the supported values: intern, admin, subadmin, moderator, or superadmin.
This repository contains the web application version of the Intern Management System. A separate desktop version may be maintained in a different project repository.