Skip to content

epungkdd/Lms

Repository files navigation

LMS Platform - Node.js Version

arsymedia.id - Platform LMS Modern

Aplikasi Learning Management System (LMS) yang dibangun menggunakan Node.js + Express.js untuk backend dan frontend yang responsif dengan Tailwind CSS dan Jitsi untuk video conferencing.

✨ Fitur Utama

  • Autentikasi Pengguna: Registrasi, login, logout dengan password hashing (bcrypt)
  • Manajemen Kelas: Guru dapat membuat kelas, siswa dapat bergabung
  • Live Chat: Komunikasi real-time antar pengguna di dalam kelas
  • Upload File: Unggah dokumen, PDF, gambar dengan limit 10MB
  • Ujian Online: Guru membuat soal ujian, siswa mengerjakan dengan proctoring
  • Kehadiran (Attendance): Pencatatan masuk/keluar siswa dan scoring
  • Nilai & Reward: Tracking nilai ujian, kuis, dan reward untuk siswa
  • Video Conference: Integrasi Jitsi JaaS untuk live teaching
  • Proctoring Otomatis: Monitoring siswa saat ujian (deteksi pindah tab, offline)
  • Dashboard Responsif: UI modern dengan Tailwind CSS untuk desktop & mobile

🛠️ Tech Stack

  • Backend: Node.js, Express.js
  • Database: MySQL 8.0+
  • Frontend: HTML5, Tailwind CSS, JavaScript (Vanilla)
  • Authentication: bcryptjs, express-session
  • File Upload: Multer
  • Video: Jitsi Meet (JaaS)
  • Additional: JWT, CORS

📋 Instalasi

Prerequisites

  • Node.js 14.0+ dan npm
  • MySQL 8.0+
  • Git

Setup Steps

  1. Clone repository / Buka workspace

    cd /workspaces/Lms
  2. Install dependencies

    npm install
  3. Konfigurasi database

    • Copy file .env.example ke .env (opsional, sudah ada default config)
    • Edit konfigurasi database di server.js baris ~30 jika diperlukan
  4. Jalankan server

    # Development dengan auto-reload (gunakan nodemon)
    npm run dev
    
    # Production
    npm start
  5. Akses aplikasi

    http://localhost:3000
    

📦 Struktur Project

/workspaces/Lms/
├── server.js              # Main server & API endpoints
├── package.json           # Dependencies
├── .env.example          # Environment template
├── public/
│   └── index.html        # Frontend (SPA)
├── uploads/              # File upload directory (auto-created)
└── README.md             # Dokumentasi

🔌 API Endpoints

Authentication

  • POST /api/register - Registrasi akun baru
  • POST /api/login - Login
  • POST /api/logout - Logout

Classes

  • POST /api/create_class - Buat kelas baru (guru)
  • POST /api/join_class - Bergabung kelas (siswa)

Main State

  • POST /api/get_state - Ambil state dashboard utama

Chat

  • POST /api/get_chats - Ambil daftar chat
  • POST /api/send_chat - Kirim pesan
  • POST /api/upload_file - Upload file

Exam

  • POST /api/get_exam - Ambil soal ujian
  • POST /api/save_exam - Buat/update ujian (guru)
  • POST /api/submit_exam - Submit jawaban ujian (siswa)

Attendance

  • POST /api/absen_siswa - Presensi siswa
  • POST /api/absen_guru - Set kehadiran manual (guru)

Grades

  • POST /api/update_reward - Update reward siswa (guru)
  • POST /api/update_settings - Update settings kelas (guru)

Proctoring

  • POST /api/ping_proctoring - Kirim status proctoring (siswa)
  • POST /api/get_proctoring - Ambil data proctoring (guru)

🔐 Default Test Account

User credentials sudah auto-terbuat saat pertama kali aplikasi dijalankan. Silakan registrasi akun baru atau import data dari database lama.

Database tables yang di-auto-create:

  • users - Data pengguna (admin, guru, siswa)
  • classes - Data kelas
  • class_students - Relasi siswa-kelas
  • chats - Pesan chat
  • attendances - Data kehadiran
  • grades - Nilai siswa
  • exams - Data ujian
  • live_proctoring - Monitoring proctoring
  • proctoring_logs - Log proctoring

🚀 Deployment

Heroku / Railway

# Setup Procfile
echo "web: node server.js" > Procfile

# Environment variables di platform
DATABASE_URL=mysql://user:pass@host:3306/dbname
SESSION_SECRET=random-secret-key

Self-Hosted (VPS)

# Install on Ubuntu/Debian
sudo apt-get install -y nodejs npm mysql-server

# Clone & setup
git clone <repo>
cd Lms
npm install
npm start

# Gunakan PM2 untuk production
npm install -g pm2
pm2 start server.js --name "lms"
pm2 startup
pm2 save

📝 Catatan Developer

  • Session default timeout: 24 jam
  • Max file upload: 10MB
  • Format file yang diizinkan: pdf, doc, docx, xls, xlsx, ppt, pptx, zip, rar, jpg, png, jpeg
  • Proctoring: Deteksi offline jika > 25 detik tanpa ping
  • Password hashing: bcryptjs dengan 10 rounds
  • API responses: JSON format dengan field status dan message

🐛 Troubleshooting

Error: Cannot find module 'express'

npm install

Error: connect ECONNREFUSED (Database Error)

  • Pastikan MySQL server running
  • Cek konfigurasi database di server.js
  • Verify credentials dan database name

Port 3000 sudah digunakan

# Change PORT di .env atau hardcode di server.js
PORT=8080 node server.js

📄 License

MIT License - Arsymedia Platform

👥 Support

Untuk bantuan lebih lanjut, dokumentasi lengkap tersedia di:

  • API: Lihat endpoint di server.js
  • Frontend: Lihat public/index.html
  • Database: Auto-create tables saat server start

About

lms.arsymedia.id

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors