A Laravel-based student onboarding platform for SITC Campus, covering degree and diploma registrations, secure exam paper submissions, and admin-only management tools for reviewing, exporting, and downloading submission documents.
- Degree registration form with full personal, contact, academic details, and required document uploads.
- Diploma registration form with payment slip upload and program resolution from the register ID.
- Registration verification pages for both degree and diploma applicants.
- Secure exam paper submission form for lecturers (degree or diploma submission types).
- Protected admin dashboard.
- Degree registrations list with search, filter, Excel export, and bulk document ZIP download.
- Diploma registrations list with search, filter, and Excel export.
- Exam paper submissions list with search, filtering by type, file download, and deletion.
A Laravel-based onboarding platform for SITC Campus that handles degree and diploma registrations, applicant verification, secure exam paper submission, and admin-only review/export workflows.
- Overview
- Features
- Tech Stack
- Architecture Overview
- Routes
- Data Model
- File Storage
- Validation Rules
- Admin Access
- Setup
- Build & Run
- Exports
- Security Notes
- Troubleshooting
- Contact
- License
This application provides:
- Degree and diploma student registration forms with required document uploads.
- Register ID verification pages for applicants.
- A secure lecturer exam paper submission form.
- Admin-only dashboards for viewing, filtering, exporting, and downloading submissions.
- Degree registration with comprehensive personal, contact, academic details, and required documents.
- Diploma registration with payment slip upload and program resolution from register ID.
- Registration verification for both degree and diploma applicants.
- Secure exam paper submission (degree/diploma types).
- Protected dashboard.
- Degree registrations list with search, filter, Excel export, and bulk document ZIP download.
- Diploma registrations list with search, filter, and Excel export.
- Exam paper submissions list with search, filtering by type, file download, and deletion.
- Laravel 12
- Laravel Breeze (authentication scaffolding)
- PHP 8.2+
- Tailwind CSS + Alpine.js
- Vite
- maatwebsite/excel (exports)
- SQLite by default (configurable)
DegreeRegistrationController— degree registration, validation, document storage, verification.DiplomaRegistrationController— diploma registration, payment slip storage, verification.ExamPaperSubmissionController— lecturer paper submission, admin listing, download.AdminDegreeController— degree admin list, export, ZIP download of documents.AdminDiplomaController— diploma admin list and export.
IsAdmin— restricts admin access by email address.
resources/views/degree_registrations— degree registration form.resources/views/diploma_registrations— diploma registration form.resources/views/view_degree_registrations— degree verification and details.resources/views/view_diploma_registrations— diploma verification and details.resources/views/exam_paper_submissions— lecturer paper submission.resources/views/admin— admin lists and actions.
/— Landing page./degree-register— Degree registration form./diploma-register— Diploma registration form./degree-register-check— Verify degree registration./diploma-register-check— Verify diploma registration./submit-exam-paper— Exam paper submission form./login— Admin login.
/admin/dashboard— Admin dashboard./admin/degree-registrations— Degree registrations list./admin/export-degree-registrations— Degree export (Excel)./admin/degree-registrations/{id}/download-all— Download all degree documents (ZIP)./admin/diploma-registrations— Diploma registrations list./admin/export-diploma-registrations— Diploma export (Excel)./admin/exam-paper-submissions— Exam paper submissions list./admin/exam-paper-submissions/{id}/download— Download paper file.
Stored in degree_registrations:
- Identity and contact details.
- Academic and guardian details.
- Program selection and derived program name from register ID.
- File paths for required documents.
Stored in diploma_registrations:
- Identity and contact details.
- Derived diploma name from register ID.
- Payment slip file path.
Stored in exam_paper_submissions:
- Lecturer details, submission type (degree/diploma), subject information.
- Exam date and file metadata.
Stored in users (Laravel Breeze).
- Degree documents:
storage/app/public/degree_documents/{register_id_slug} - Diploma payment slips:
storage/app/public/payment_slips - Exam papers:
storage/app/exam_papers(local/private disk)
Ensure the public storage symlink exists so admin views and exports can resolve file URLs:
public/storage→storage/app/public
- Required fields: register ID, personal info, contact info, academic info.
- Program selection is validated and also derived from register ID.
- Documents: PDF/JPG/PNG with a max size of 5MB each.
- Required fields: register ID, personal info, contact info.
- Payment slip: PDF/JPG/PNG with a max size of 5MB.
- Diploma name is derived from register ID.
- Required fields: lecturer name, exam date, submission type.
- Degree fields for degree submissions; diploma fields for diploma submissions.
- File types: PDF/DOC/DOCX, max 10MB.
Admin access is restricted by is_admin middleware. The allowed email address is defined in:
app/Http/Middleware/IsAdmin.php
Currently allowed admin email:
sitclk.it@gmail.com
Create a user with that email in the database before logging in. Public registration routes are disabled.
-
Install PHP dependencies:
composer install
-
Install frontend dependencies:
npm install
-
Configure environment:
cp .env.example .env
Update
.envforAPP_URL, database, mail, and storage settings as needed. Keep stored timestamps in UTC and configure the user-facing timezone separately:APP_TIMEZONE=UTC APP_DISPLAY_TIMEZONE=Asia/Colombo
-
Generate application key:
php artisan key:generate
-
Run migrations:
php artisan migrate
-
Create the storage symlink:
php artisan storage:link
Run the development servers:
npm run devphp artisan serve- Degree export includes all key fields, document URLs, and a ZIP download link for all documents.
- Diploma export includes key fields and submission timestamps.
- Exam paper files are stored on the private local disk and are only downloadable through admin endpoints.
- Public document links require the storage symlink and are intended for admin review.
- Change the allowed admin email in
IsAdminbefore deployment if required.
- If documents are missing in admin exports, ensure the storage symlink exists and the files are present in
storage/app/public. - If admin access fails, verify the authenticated user email matches the configured admin email.
- If file upload fails, check PHP upload limits and allowed MIME types.
For support, contact info@sitc.lk or visit https://www.sitc.lk.
This project is licensed under the MIT License. See the LICENSE file for details.