lernginx — LMS Open-Source buat SMP/SMA yang GRATIS
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 internal project — sebuah sistem belajar online yang lumayan kompleks. Masalahnya, semua identitas klien masih nempel di kode. Alih-alih minta izin satu-satu, aku putuskan buat strip total: ganti semua UI ke English, routing dinamis, hapus semua data pribadi.
Hasilnya? Sebuah LMS yang lumayan matang dengan fitur-fitur yang biasanya cuma ada di platform komersial — tanpa framework, tanpa Composer, tanpa Node.js. Murni PHP 8.4 prosedural + vanilla JavaScript + MySQL.
Dashboard Admin
Setelah login, admin disambut dashboard dengan navigasi lengkap ke semua fitur manajemen: konten, kategori, tag, user, monitoring, dan lainnya.

Tampilan dashboard admin dengan navigasi sidebar dan informasi ringkasan.
Manajemen Konten
CRUD post lengkap dengan Quill rich text editor, status publikasi (draft/published), filter berdasarkan kategori dan status, serta soft-delete dengan trash.

Daftar post dengan kolom title, kategori, author, status, dan tanggal.
Manajemen Kategori
Kategori bisa dibuat bertingkat (parent-child). Berguna untuk mapping program belajar — misal Matematika punya child Aljabar dan Geometri. Setiap kategori bisa diatur apakah menampilkan post langsung di halamannya.

Tree kategori dengan tombol aksi show posts, edit, dan delete.
Manajemen User
Admin bisa mengelola semua user: edit email, ganti password, ubah role (student/teacher/admin), dan soft-delete. Fitur pencarian dan filter berdasarkan role memudahkan navigasi jika user sudah banyak.

Halaman user settings dengan form edit inline dan filter role.
Post Detail & Pembelajaran
Setiap post bisa menampilkan konten pembelajaran lengkap dengan YouTube embed, thumbnail, kategori, dan author. Tampilan di dashboard maupun publik sudah diatur terpisah.

Tampilan post detail di dashboard — category, metadata, dan konten.
Program & Modul
Program belajar di-generate otomatis dari database. Setiap kategori utama (Mathematics, Science, dll) punya halaman sendiri dengan daftar child categories dan post di dalamnya. Admin tinggal nambah kategori, dan program baru langsung muncul.

Halaman program dalam dashboard dengan daftar materi.
Profile & Foto
Setiap pengguna punya halaman profil lengkap: foto (auto-convert ke WebP saat upload), nomor telepon (dipakai untuk reset password via WhatsApp), alamat, tanggal lahir, asal sekolah, jurusan, dan NISN.

Form profil dengan upload foto, preview sebelum upload, dan field data diri.
Tech Stack
| Komponen | Teknologi |
|---|---|
| Backend | PHP 8.4 (procedural, PDO, tanpa framework) |
| Database | MySQL/MariaDB (InnoDB, utf8mb4) |
| Frontend | Vanilla PHP, Vanilla JS, CSS murni |
| Editor | Quill rich text editor |
| Server | Nginx — rewrite rules untuk clean URL |
| Testing | Playwright + Chromium headless — 36 E2E test |
| Image Processing | GD/Imagick — upload foto auto-convert WebP |
Coba Langsung
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 (password: password):
- Admin: [email protected]
- Teacher: [email protected]
- Student: [email protected]
Penutup
Ini project open-source pertama aku yang lumayan kompleks. Masih banyak yang bisa diimprove — dokumentasi instalasi yang lebih rapi, fitur grading/nilai, atau integrasi pembayaran. Tapi buat dasar LMS yang fungsional, ini sudah cukup.
Repo: github.com/adammuizweb/lernginx
Release & screenshot: v1.0.0