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.
- 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
- 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
- Node.js 14.0+ dan npm
- MySQL 8.0+
- Git
-
Clone repository / Buka workspace
cd /workspaces/Lms -
Install dependencies
npm install
-
Konfigurasi database
- Copy file
.env.exampleke.env(opsional, sudah ada default config) - Edit konfigurasi database di
server.jsbaris ~30 jika diperlukan
- Copy file
-
Jalankan server
# Development dengan auto-reload (gunakan nodemon) npm run dev # Production npm start
-
Akses aplikasi
http://localhost:3000
/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
POST /api/register- Registrasi akun baruPOST /api/login- LoginPOST /api/logout- Logout
POST /api/create_class- Buat kelas baru (guru)POST /api/join_class- Bergabung kelas (siswa)
POST /api/get_state- Ambil state dashboard utama
POST /api/get_chats- Ambil daftar chatPOST /api/send_chat- Kirim pesanPOST /api/upload_file- Upload file
POST /api/get_exam- Ambil soal ujianPOST /api/save_exam- Buat/update ujian (guru)POST /api/submit_exam- Submit jawaban ujian (siswa)
POST /api/absen_siswa- Presensi siswaPOST /api/absen_guru- Set kehadiran manual (guru)
POST /api/update_reward- Update reward siswa (guru)POST /api/update_settings- Update settings kelas (guru)
POST /api/ping_proctoring- Kirim status proctoring (siswa)POST /api/get_proctoring- Ambil data proctoring (guru)
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 kelasclass_students- Relasi siswa-kelaschats- Pesan chatattendances- Data kehadirangrades- Nilai siswaexams- Data ujianlive_proctoring- Monitoring proctoringproctoring_logs- Log proctoring
# 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# 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- 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
statusdanmessage
npm install- Pastikan MySQL server running
- Cek konfigurasi database di
server.js - Verify credentials dan database name
# Change PORT di .env atau hardcode di server.js
PORT=8080 node server.jsMIT License - Arsymedia Platform
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