Portal LMS adalah platform Learning Management System yang dirancang khusus untuk persiapan Olimpiade Matematika. Aplikasi ini dibangun dengan Clean Architecture menggunakan Go (Fiber v2) untuk backend REST API dan React 19 (Vite 8) untuk frontend SPA.
Platform ini telah diimplementasikan dan digunakan secara aktif oleh berbagai sekolah menengah atas melalui koordinasi dengan Musyawarah Guru Mata Pelajaran (MGMP). Pengembangan dan penyebaran sistem ini didukung serta didanai oleh program Pengabdian Kepada Masyarakat Universitas.
- Super Admin: Manajemen global, pengguna, organisasi, dan analitik platform.
- Admin Organisasi: Manajemen pengguna dan monitoring dalam organisasi terkait.
- Guru: Pembuatan materi (modul, bank soal, kuis), pengaturan alur belajar (learning paths), penilaian jawaban esai, dan laporan diagnostik siswa.
- Siswa: Akses modul pembelajaran (PDF & video), pengerjaan latihan dengan timer, serta laporan hasil diagnosis per topik.
- Exam Stages: Pengelompokan latihan secara terstruktur (contoh: Accuracy -> Strategy -> Speed).
- Stage Unlock Logic: Akses ke tahap berikutnya otomatis terbuka setelah menyelesaikan seluruh bank soal di tahap sebelumnya dengan rata-rata nilai memenuhi target kelulusan (
min_passing_score).
- LaTeX Support: Penulisan notasi matematika menggunakan KaTeX terintegrasi dengan editor TipTap.
- Tipe Soal: Mendukung pilihan ganda dan esai.
- Pengaturan Ujian: Konfigurasi batas waktu ujian, waktu per soal, batas percobaan, dan jadwal ketersediaan.
- Penilaian: Otomatis untuk pilihan ganda, dan panel penilaian manual oleh guru untuk esai.
- Analisis jawaban siswa berdasarkan topik matematika.
- Identifikasi kelemahan (skor di bawah 60%) disertai rekomendasi modul belajar yang relevan.
- Pre-Test Gating: Modul baru terbuka setelah siswa menuntaskan semua pre-test prasyarat.
- Forum Diskusi: Ruang tanya-jawab per modul yang mendukung notasi matematika KaTeX.
- Pemeringkatan siswa per bank soal secara real-time berdasarkan nilai terbaik, pengerjaan tercepat, atau riwayat terbaru.
- Analitik tren performa siswa dan visualisasi kemajuan belajar.
Dokumen panduan lengkap tersedia di dalam direktori manual-book/:
| Panduan Pengguna | Format PDF | Dokumen Sumber (Markdown) | Peran Target |
|---|---|---|---|
| Buku Panduan Lengkap | Unduh PDF | - | Semua Pengguna & Administrator |
| Panduan Super Admin | Unduh PDF | Lihat Markdown | Platform Super Administrator |
| Panduan Admin Organisasi | Unduh PDF | Lihat Markdown | Administrator Organisasi |
| Panduan Guru | Unduh PDF | Lihat Markdown | Guru & Pembuat Konten |
| Panduan Siswa | Unduh PDF | Lihat Markdown | Siswa / Peserta Didik |
| Peran (Role) | Username | Password | Deskripsi Akses |
|---|---|---|---|
| Super Admin | admin |
password |
Manajemen global tenant |
| Admin Organisasi | orgadmin |
password |
Manajemen guru & siswa dalam organisasi |
| Guru | budi |
password |
Konten pembelajaran, soal, & penilaian |
| Siswa | ani |
password |
Pembelajaran mandiri & pengerjaan kuis |
- Backend: Go 1.26, Fiber v2, GORM, Argon2id, JWT, golang-migrate
- Frontend: React 19, Vite 8, Tailwind CSS v4, Zustand v5, React Router v7
- Utilities: TipTap Editor, KaTeX, Recharts
- Infrastruktur: Docker (scratch multi-stage, ~10MB image), Caddy (Reverse Proxy, Auto TLS), Ansible, PostgreSQL, MinIO (Local S3)
├── Makefile # Target build, test, docker, dan migrasi database
├── Dockerfile # Multi-stage build (node -> go -> scratch)
├── compose.yml # Docker Compose utama untuk produksi
├── compose.dev.yml # Docker compose khusus untuk environment development
├── cmd/
│ ├── server/ # Entrypoint server Go utama (main.go dengan graceful shutdown)
│ └── seed/ # Program seeding data uji coba awal
├── internal/
│ ├── app/ # Setup aplikasi & dependency injection (wiring)
│ ├── config/ # Loader variabel lingkungan (.env)
│ ├── domain/ # Definisi model entity, DTO, & kontrak interface (40+ file)
│ ├── repository/ # Implementasi query database menggunakan GORM (18 repo)
│ ├── service/ # Implementasi logika bisnis aplikasi (20 service)
│ ├── http/ # Fiber handlers, middleware, & pendaftaran rute API (25 file)
│ └── web/ # Embedded static React SPA distribution bundle (`go:embed`)
├── frontend/ # Project root React SPA (Vite, Tailwind v4, Zustand)
├── migrations/ # File SQL migrasi database (golang-migrate)
├── manual-book/ # Dokumen panduan pengguna (PDF, Markdown, & Screenshots)
└── infra/ # Konfigurasi reverse proxy Caddy, playbook Ansible, & backup script
-
Salin berkas lingkungan dan sesuaikan nilainya:
cp .env.example .env
-
Jalankan database PostgreSQL dan MinIO (Local S3) menggunakan Docker:
docker compose -f compose.dev.yml up -d
-
Jalankan aplikasi (otomatis mem-build React frontend dan menjalankan REST server):
make run
- Menjalankan semua migrasi pending:
make migrate-up
- Membatalkan (rollback) satu migrasi terakhir:
make migrate-rollback
- Membuat migrasi database baru:
make migrate-create
- Menjalankan unit test:
make test - Menjalankan integration test:
make test-integration
- Menjalankan golangci-lint (linter):
make lint
- Menjalankan seluruh container di VPS:
make docker-up
- Menghentikan dan membersihkan volume database:
make docker-down make docker-clean
Untuk memperbarui konfigurasi reverse proxy tanpa menghentikan layanan:
make -C infra caddy-reloadGunakan SSH Port Forwarding untuk mengakses PostgreSQL lokal secara aman melalui SSH:
- Jalankan perintah SSH Port Forwarding di terminal lokal:
ssh -N -L 5432:127.0.0.1:5432 deploy@<VPS_IP> -i ~/.ssh/lms-server
- Hubungkan klien database Anda ke Host
127.0.0.1di Port5432.


