Skip to content

Repository files navigation

Portal LMS (Learning Management System)

Go Version React Version Tailwind CSS Docker PostgreSQL

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.

Implementasi & Dukungan

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.


Preview Aplikasi

Dashboard Admin Organisasi

Dashboard Admin Organisasi

Dashboard Guru

Dashboard Guru

Dashboard Siswa

Dashboard Siswa


Fitur Utama

1. Multi-Tenant Role Access Control (RBAC)

  • 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.

2. Learning Path (Latihan Bertahap)

  • 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).

3. Exam Engine & Question Bank

  • 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.

4. Diagnostic Report

  • Analisis jawaban siswa berdasarkan topik matematika.
  • Identifikasi kelemahan (skor di bawah 60%) disertai rekomendasi modul belajar yang relevan.

5. Modul Pembelajaran & Diskusi

  • 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.

6. Leaderboard & Analitik

  • Pemeringkatan siswa per bank soal secara real-time berdasarkan nilai terbaik, pengerjaan tercepat, atau riwayat terbaru.
  • Analitik tren performa siswa dan visualisasi kemajuan belajar.

Panduan Pengguna (Manual Books)

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

Kredensial Uji Coba (Demo Accounts)

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

Tech Stack & Dependencies

  • 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)

Struktur Direktori

├── 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

Memulai (Getting Started)

Persiapan Environment & Database Lokal

  1. Salin berkas lingkungan dan sesuaikan nilainya:

    cp .env.example .env
  2. Jalankan database PostgreSQL dan MinIO (Local S3) menggunakan Docker:

    docker compose -f compose.dev.yml up -d
  3. Jalankan aplikasi (otomatis mem-build React frontend dan menjalankan REST server):

    make run

Perintah Pengembangan (Development Commands)

Migrasi Database

  • Menjalankan semua migrasi pending:
    make migrate-up
  • Membatalkan (rollback) satu migrasi terakhir:
    make migrate-rollback
  • Membuat migrasi database baru:
    make migrate-create

Pengujian & Kualitas Kode

  • Menjalankan unit test:
    make test
  • Menjalankan integration test:
    make test-integration
  • Menjalankan golangci-lint (linter):
    make lint

Docker & Deployments

Operasi Server Produksi (VPS)

  • Menjalankan seluruh container di VPS:
    make docker-up
  • Menghentikan dan membersihkan volume database:
    make docker-down
    make docker-clean

Hot-Reloading Konfigurasi Caddy

Untuk memperbarui konfigurasi reverse proxy tanpa menghentikan layanan:

make -C infra caddy-reload

Koneksi Aman ke Database VPS (SSH Tunneling)

Gunakan SSH Port Forwarding untuk mengakses PostgreSQL lokal secara aman melalui SSH:

  1. Jalankan perintah SSH Port Forwarding di terminal lokal:
    ssh -N -L 5432:127.0.0.1:5432 deploy@<VPS_IP> -i ~/.ssh/lms-server
  2. Hubungkan klien database Anda ke Host 127.0.0.1 di Port 5432.

About

Platform Learning Management System yang dirancang khusus untuk persiapan Olimpiade Matematika.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages