AV
HomeAboutProjectBlog

© 2026 Ave syah Shina. All rights reserved.

  1. Home
  2. Projects
  3. Kampus Merdeka

Kampus Merdeka

January 1, 20236 min read
PHPCodeigniterLaravelMySQLBootstrap
1 / 3

Overview

This project covers two production PHP web applications I contributed to during the Indonesian "Kampus Merdeka" (MSIB) internship program. Both are hosted on GitLab and serve national higher-education programs run by the Ministry of Education: the IISMA scholarship system (iisma_web) and the Wirausaha Merdeka entrepreneurship platform (wmk_web). They are separate codebases, teams, and frameworks, but together they represent the same body of internship work, so they are documented here as one combined PRD.

IISMA (Indonesian International Student Mobility Awards) is a scholarship that sends Indonesian students to study abroad. iisma_web is the end-to-end management system for that program: it handles candidate registration, document upload, administration screening, interviewer registration and scheduling, interviews, awardee management (CV, passport, visa, bank account, progress reports), finance and funding, ticketing, and attendance — across many role-based workspaces (awardee, interviewer, host university, LPDP, KUI, secretariat, and more).

Wirausaha Merdeka (wmk_web) is the platform for a student entrepreneurship program. It manages the full lifecycle of program proposals: registration by higher-education institutions (perguruan tinggi), proposal submission with requirements and budget, reviewer assignment and scoring, funding decisions, weekly student logbooks validated by supervisors (DPL), progress and final reports, refund schemes, e-billing, and survey questionnaires. Target users are students, campus administrators, reviewers, supervisors, and ministry staff.

Both apps follow a classic server-rendered PHP MVC architecture with Bootstrap-based views, MySQL persistence, and GitLab CI for deployment. The main technical contrast is the framework: CodeIgniter 4 for IISMA versus Laravel 8 for Wirausaha Merdeka.

Tech Stack & Rationale

Layer

Technology

Why

IISMA framework

CodeIgniter 4

Lightweight PHP MVC chosen for the scholarship system

WMK framework

Laravel 8

Feature-rich PHP framework (Eloquent, queues, Sanctum)

Language

PHP (7.3+ / 8.0)

Shared runtime for both apps

Database

MySQL

Primary store for both apps (WMK also ships a pgsql connection config)

Auth (IISMA)

myth-auth (third-party)

Role-based authentication and authorization

Auth (WMK)

Laravel Sanctum + roles

Session + token auth, laravel/ui scaffolding

Frontend

Bootstrap 4 + Blade / CI views

Responsive admin and public pages

Documents/export (IISMA)

PhpSpreadsheet, PhpWord, mPDF, domPDF

Word/Excel/PDF document generation

Documents/export (WMK)

maatwebsite/excel, domPDF, laravel-pdfmerger

Excel export, PDF, PDF merging

DataTables (WMK)

yajra/laravel-datatables

Server-side tables across dashboards

Deployment

GitLab CI, Docker (WMK), cPanel (IISMA)

Automated staging/production deploys

Architecture

Both applications follow the same request/response MVC pipeline, differing only in framework internals. The flow below is generic to both; the walkthrough notes where IISMA (CodeIgniter 4) and WMK (Laravel 8) diverge.

The flow runs: Browser (Bootstrap views) → Front controller (public/index.php) → Router + Controller (28 CI controllers / Laravel routes) → Model layer (CI Model / Eloquent ORM) → MySQL (iisma_ci4 / wmk schemas); Response (HTML / PDF / XLS) → Service / export layer (PhpSpreadsheet · mPDF · Excel).

Data flow walkthrough:

  1. A request enters through public/index.php, the single front controller for both apps, which bootstraps the framework and environment.
  2. The router dispatches to a controller. IISMA uses CodeIgniter's Config/Routes.php with 28 namespaced controller folders (Admin, Awardee, Host, Interviewer, KUI, Keuangan, Sekretariat, Ticketing, …); WMK uses Laravel's routes/ files (web.php, api.php, admin.php, pt.php, reviewer.php, mahasiswa.php, dosen.php, ssc.php, …).
  3. Controllers delegate business logic to the model layer — CodeIgniter models in app/Models (or app/Services for heavier flows) for IISMA, and Eloquent models in app/Models for WMK.
  4. The model layer reads and writes MySQL. IISMA has 90+ CodeIgniter migrations (app/Database/Migrations); WMK has 100+ Laravel migrations (database/migrations).
  5. For documents, the service/export layer generates Word/Excel/PDF outputs: IISMA uses PhpSpreadsheet, PhpWord, mPDF, and domPDF; WMK uses maatwebsite/excel, domPDF, and laravel-pdfmerger.
  6. The response is rendered through Bootstrap 4 views — CodeIgniter view templates (app/Views) for IISMA, Blade templates (resources/views) for WMK — or returned as a downloadable file.
  7. Deployment is automated: WMK uses GitLab CI with Docker Compose to a staging/production server; IISMA deploys to cPanel.

Folder Structure

iisma_web/                       # IISMA scholarship system (CodeIgniter 4)
├── app/
│ ├── Controllers/ # 28 role-based controller folders
│ ├── Models/ # Data models
│ ├── Views/ # Bootstrap 4 view templates (per role)
│ ├── Database/
│ │ ├── Migrations/ # 90+ schema migrations
│ │ └── Seeds/ # seed data
│ ├── Config/ # routes, database, filters, …
│ ├── Services/ # business logic (Awardee, Interviewer, KUI, …)
│ ├── Libraries/ Helpers/ Filters/ Validation/
│ ├── ThirdParty/myth-auth/ # role-based auth library
│ └── Language/ # translation strings
├── public/ # web root (index.php, assets)
├── tests/ writable/
├── composer.json spark builds carbon
└── .env.example .gitlab-ci.yml .cpanel.yml

wmk_web/ # Wirausaha Merdeka platform (Laravel 8)
├── app/
│ ├── Http/Controllers/ # role + API controllers
│ ├── Models/ # 70+ Eloquent models
│ └── Providers/ # service providers
├── routes/ # web, api, auth, admin, pt, reviewer, mahasiswa, dosen, ssc
├── database/
│ ├── migrations/ # 100+ migrations
│ ├── factories/ seeders/
├── resources/views/ # Blade templates (front, admin, mahasiswa, pdf, …)
├── config/ bootstrap/ storage/ stubs/ tests/
├── artisan composer.json Dockerfile docker-compose-dev.yml docker-compose-prod.yml
└── .gitlab-ci.yml webpack.mix.js package.json
  • iisma_web/app/ follows the CodeIgniter 4 layout, with heavy use of per-role Controllers/ and Views/ folders and a Services/ layer for complex flows.
  • iisma_web/app/Database/Migrations/ and wmk_web/database/migrations/ are the schema source of truth for each app.
  • wmk_web/app/Models/ holds 70+ Eloquent models mirroring the migration tables, while routes/ splits routes by user role.
  • wmk_web/resources/views/ contains the Blade templates including PDF export views.

Database Design

Both apps are relational MySQL schemas. Key tables are grouped by domain below (from the migrations).

IISMA (iisma_web) — scholarship lifecycle:

Domain

Representative tables

Program & university

ProgramHostUniversity, ProgramCourse, ProgramCourseCompetency, DataHostUniversity, CampusAndCourseType, DataCompetency, ProgramStudi, FieldOfStudy, Specialization

Selection & interview

DataInterviewer, InterviewerRegistration, InterviewerSesi, MeetingLink, InterviewAnswer, InterviewerRegistrationEducationBackground

Awardee

AwardeeData, AwardeeCV, AwardeePassport, AwardeeVisa, AwardeeBankAccount, AwardeeDms, AwardeeAnswers, AwardeeChallenge

Finance & reports

ManajemenKeuangan, TotalBudget, BudgetTracks, KomponenKeuangan, AwardeeNewDepositRequest, WeeklyReport

Operations

Ticketing, Presensi, Agendas, Announcement, ShortLinks, Kawasan, LLDIKTI, Province, Regencies, Negara

Wirausaha Merdeka (wmk_web) — entrepreneurship program:

Domain

Representative tables

Auth & roles

roles, users, user_requests, user_activities, jobs, failed_jobs

Institutions & students

perguruan_tinggis, pembina_perguruan_tinggis, program_studis, mahasiswas, dosens, wilayahs, provinsis

Proposals & requirements

proposals, file_proposals, syarats, syarat_mahasiswas, mahasiswa_pendaftars, fitur_programs, tahapans, tahapan_proposals, jadwals, kegiatans

Review & scoring

reviewers, plot_reviewers, kelompok_penilaians, kriteria_penilaians, hasil_penilaians

Mentoring & logbook

dosen_pembimbings, mahasiswa_bimbingans, logbook_mahasiswas, logbook_pembimbings, minggu_laporans, status_validasis, laporan_akhir_pembimbings

Surveys

form_surveys, form_survey_sections, form_survey_soals, form_survey_pilihan_jawabans, form_survey_isians, rumpun_prodis, range_ipks

Impact & Results

  • Two production applications serving national Ministry of Education programs: the IISMA study-abroad scholarship system and the Wirausaha Merdeka entrepreneurship platform.
  • Both are live tools used by students, administrators, reviewers, and ministry staff across Indonesia.

My Contributions

IISMA (iisma_web)

  • Implemented the mental-health check feature in the awardee registration flow, including the quiz form and the KUI field.
  • Fixed awardee registration form issues (regency select persistence, submission button, registration form updates).
  • Maintained and fixed the self-survey status and flow.
  • Built the MOOC (course) feature and its export.
  • Developed the Letter of Guarantee (LoG) workflow for the Secretariat and co-funding, including name/export handling.
  • Contributed to the finance (keuangan) module — fund submission search and addition, plus the sidebar.

Wirausaha Merdeka (wmk_web)

  • Implemented OTP and change-password flows (new OTP controller and email token).
  • Reworked the refund scheme (skema refund): refund calculation fixes, PVT fund-return page, and participant refund display.
  • Built and fixed weekly logbook features: upload, validation, the "late" flag (is_telat), DPL validation, and minimum word count.
  • Added e-billing upload/validation and adjusted the fund-return (pengembalian dana) page.
  • Fixed role-based data export and reviewer name display in downloads.
  • Fixed review/interview totals and DPL student-list views, and improved final-report validation.

References

[1] CodeIgniter Foundation, "CodeIgniter 4 User Guide," codeigniter.com. [Online]. Available: https://codeigniter4.github.io/userguide/ [2] Laravel, "Laravel 8.x Documentation," laravel.com. [Online]. Available: https://laravel.com/docs/8.x [3] Laravel, "Laravel Sanctum," laravel.com. [Online]. Available: https://laravel.com/docs/8.x/sanctum [4] Yajra, "Laravel DataTables," GitHub. [Online]. Available: https://github.com/yajra/laravel-datatables [5] Maatwebsite, "Laravel Excel," GitHub. [Online]. Available: https://github.com/SpartnerNL/Laravel-Excel [6] PHPSpreadsheet, "PHPExcel successor," GitHub. [Online]. Available: https://github.com/PHPOffice/PhpSpreadsheet [7] Kemdikbud, "Kampus Merdeka (MSIB)," kampusmerdeka.kemdikbud.go.id. [Online]. Available: https://kampusmerdeka.kemdikbud.go.id/

Comments

Leave a Comment

You must be signed in to comment

0 Comments

No comments yet. Be the first to comment!