Blog lernginx — LMS Open-Source buat SMP/SMA yang Baru Aku Rilis Ditulis oleh Adam Muiz 29 Jun 2026 Diperbarui: 06 Aug 2026 4 menit baca Setelah beberapa minggu refactoring dan bersihin kode, akhirnya hari ini aku rilis lernginx sebagai project open-source di GitHub. Ini adalah Learning Management System (LMS) untuk jenjang SMP/SMA yang awalnya aku buat untuk project private seorang klien. Awalnya project ini bernama internal SCCR NextGen — sebuah sistem belajar online yang lumayan kompleks: ada manajemen konten, registrasi modul siswa, assignment guru, upload foto profil, reset password via WhatsApp, dan berbagai fitur lain yang biasanya ada di LMS komersial. Masalahnya, codebase-nya masih tercampur dengan identitas klien: nama perusahaan, nomor telepon, foto karyawan, bahasa Indonesia di UI — pokoknya nggak bisa langsung di-publish. Alih-alih minta izin satu-satu, aku putuskan untuk refactor total: strip semua identitas, ganti jadi generic, UI full English, routing dinamis dari database. Apa Itu lernginx? lernginx adalah LMS berbasis web yang dibangun dengan vanilla PHP 8.4, MySQL/MariaDB, dan Nginx. Nggak ada framework, nggak ada Composer, nggak ada Node.js build step. Semua murni PHP prosedural + vanilla JavaScript. Ini memang sengaja — biar ringan, mudah dipahami, dan bisa jalan di server minim. Tampilan homepage lernginx dengan hero section dan navigasi program. Tech Stack KomponenTeknologi BackendPHP 8.4 (procedural, PDO) DatabaseMySQL/MariaDB (InnoDB, utf8mb4) FrontendVanilla PHP, Vanilla JS, CSS EditorQuill rich text editor ServerNginx dengan rewrite rules untuk clean URL TestingPlaywright dengan Chromium headless (36 E2E tests) Fitur Unggulan Role-Based Access Tiga role dengan dashboard masing-masing: Admin (full control), Teacher (manage content + assign students), dan Student (register modules + view content). Setiap role punya akses dan halaman yang berbeda beda. Dashboard admin setelah login. Program & Category Management Program belajar (matematika, sains, bahasa, seni) bukan hardcoded — tapi di-generate otomatis dari tabel categories di database. Admin tinggal tambah kategori utama, dan langsung muncul sebagai halaman program baru. Nggak perlu buat file PHP baru setiap kali mau nambah program. Halaman program yang menampilkan kategori utama dari database. Content Management System CRUD lengkap untuk post, halaman, kategori, dan tag. Editor menggunakan Quill — rich text editor yang cukup powerful buat nulis materi pembelajaran. Plus ada fitur slug generator otomatis, excerpt, featured image, thumbnail, dan embed YouTube. Manajemen konten — daftar post dengan filter dan status. Student Module Registration Siswa bisa mendaftar ke program yang tersedia, guru bisa meng-assign modul secara manual. Ada sistem approval yang fleksibel — bisa otomatis atau butuh review dari guru. Cocok untuk skenario sekolah yang butuh kontrol pendaftaran. Profile & Photo Upload Profil siswa/guru bisa diisi lengkap: foto (auto-convert ke WebP), nomor telepon (buat reset password via WhatsApp), alamat, tanggal lahir, asal sekolah, jurusan, NISN. Foto diupload langsung via drag & drop atau file picker — dengan preview sebelum upload. Clean URL Routing Nggak ada query string yang jelek. URL pakai Nginx rewrite rules yang menghasilkan path seperti /mathematics/, /dashboard/post/mathematics/intro-algebra/. Admin juga punya clean URL via /dashboard/topic/{slug}/ dan /dashboard/programs/. Tampilan post detail — category, author, dan konten pembelajaran. Kenapa Open Source? Jujur, project ini terlalu sayang kalau cuma ngendap di harddisk. Struktur kodenya cukup rapi (setelah di-refactor), dokumentasinya lumayan lengkap, dan ada 36 E2E test yang jalan semua. Mungkin ada yang butuh LMS sederhana tanpa ribet install Moodle atau beli Google Classroom. Selain itu, dengan open source, siapa tau ada yang kontribusi — nambah fitur, fix bug, atau porting ke framework lain. Minimal, repositori ini bisa jadi referensi buat yang belajar PHP native + Nginx routing + arsitektur LMS. Coba Langsung Clone repositori, import SQL, dan langsung jalan: git clone https://github.com/adammuizweb/lernginx.git mysql -u root -e "CREATE DATABASE lernginx" mysql -u root lernginx < database/schema.sql mysql -u root lernginx < database/seed.sql cp app/.env.example app/.env # Edit DB credentials di app/.env # Arahkan root Nginx ke public/ Akun demo yang sudah tersedia di seed data: Admin: [email protected] / password Teacher: [email protected] / password Student: [email protected] / password Penutup Ini bukan project yang sempurna — masih ada beberapa bagian yang butuh polish, dokumentasi instalasi yang lebih lengkap, dan mungkin skema database yang bisa diimprove. Tapi buat ukuran project sampingan yang dikerjain sambil ngopi, lumayanlah. Kalau ada yang nyoba atau nemu bug, feel free buat buka issue di GitHub atau pull request langsung. Repo-nya ada di github.com/adammuizweb/lernginx. Oh iya, release pertama udah include 9 screenshot yang bisa langsung dilihat di halaman release.