Sistem Informasi Rekomendasi Izin Penelitian Online. Mahasiswa dan peneliti mengajukan izin lewat formulir, memantau status dengan nomor referensi, dan menerima surat rekomendasi lewat email. Petugas memprosesnya dari dashboard admin. Sistem ini juga menjadi skripsiku.
Cara komponennya tersambung
BrowserPemohon dan petugas. HTML, CSS, dan JavaScript tanpa framework.
nginxMelayani frontend statis dan meneruskan /api/ ke backend.
API Node.jsExpress 5. Pendaftaran, status, dashboard admin, surat, email.
MySQL 8Data pengajuan, admin, penghitung nomor surat, audit log.
Backend juga menulis ke dua volume (berkas pemohon dan surat hasil generate) dan mengirim email lewat SMTP. Ketiganya berjalan sebagai kontainer lewat satu perintah docker compose up.
Pengajuan online
Pengajuan baru, revisi, dan perpanjangan. Pemohon mengunggah satu berkas ZIP atau RAR sampai 20 MB, dan server membatasi ukurannya juga.
Cek status dengan nomor referensi
Setiap pengajuan mendapat nomor berformat KBP-YYYYMMDD-HHMM. Status berjalan dari Pending, Diproses, sampai Selesai atau Ditolak.
Dashboard admin
Petugas mengubah status, menelusuri pengajuan, melihat grafik, dan mengekspor data ke Excel.
Email otomatis
Konfirmasi pendaftaran dan setiap perubahan status dikirim ke pemohon dengan Nodemailer, lengkap dengan tautan cek status atau revisi.
Surat rekomendasi otomatis
Surat .docx diisi dari template lewat docxtemplater. Nomor urut berjalan per tahun dan bisa melanjutkan penomoran lama.
Keamanan dan jejak audit
Password di-hash dengan scrypt dan salt, akun terkunci setelah gagal berulang, login dibatasi 10 percobaan per 15 menit, dan berkas pemohon hanya bisa diunduh admin. Aksi penting masuk audit log.
Deployment Docker
Tiga kontainer (database, API, nginx). API berjalan sebagai pengguna non-root, database punya healthcheck dan batas sumber daya.
Uji otomatis dan CI
Uji unit dengan node --test dan lint ESLint. Pipeline GitLab menjalankan keduanya dan membangun image pada setiap merge request.