Blog

lernginx — LMS Open-Source buat SMP/SMA yang GRATIS

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.

Profile page lernginx

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.

Admin dashboard lernginx
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.

Content management lernginx
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.

Categories management lernginx
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.

User settings lernginx
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.

Post detail lernginx
Tampilan post detail di dashboard — category, metadata, dan konten.

Program & Modul

Programs listing lernginx

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.

Programs listing lernginx
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.

Profile page lernginx
Form profil dengan upload foto, preview sebelum upload, dan field data diri.

Tech Stack

KomponenTeknologi
BackendPHP 8.4 (procedural, PDO, tanpa framework)
DatabaseMySQL/MariaDB (InnoDB, utf8mb4)
FrontendVanilla PHP, Vanilla JS, CSS murni
EditorQuill rich text editor
ServerNginx — rewrite rules untuk clean URL
TestingPlaywright + Chromium headless — 36 E2E test
Image ProcessingGD/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):

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

──────────────────────────────────────────