Full-stack application

E-Cuti

Sistem monitoring izin dan cuti personel dengan pengelolaan saldo, bukti dokumen, analitik, laporan, dan audit trail berbasis peran.

Minta akses demoAkses login tersedia berdasarkan permintaan.
Tahun2026
Layanan
  • Application engineering
  • Data workflow design
  • Deployment and CI/CD
Teknologi
  • FastAPI
  • Python
  • React
  • TypeScript
  • SQLite
  • MySQL
  • Docker
  • WebSocket

Masalah dan kebutuhan

Administrasi izin personel perlu menggabungkan data personel, jenis cuti, kuota, tanggal, bukti dokumen, dan riwayat perubahan. Tanpa sistem terpusat, operator harus menjaga data izin dan rekap analitik secara terpisah, sementara atasan membutuhkan ringkasan aktivitas dan tren yang dapat ditinjau cepat.

E-Cuti dibangun sebagai sistem internal untuk mencatat dan memantau izin personel. Admin mengelola data operasional, sedangkan atasan memperoleh dashboard monitoring, riwayat, kalender izin, dan analitik tanpa akses ke fungsi administrasi yang tidak diperlukan.

Implementasi aplikasi

Backend FastAPI menyediakan autentikasi JWT dan API terpisah untuk pengguna, personel, jenis cuti, catatan izin, hari libur, dashboard, laporan, dan audit. Frontend React dan TypeScript menyediakan halaman dashboard, personel, catatan izin, analitik, serta audit log berdasarkan role super_admin, admin, dan atasan.

Pencatatan izin memvalidasi personel, jenis cuti aktif, pembatasan gender, durasi, tanggal, dan kuota. Setiap record menyimpan snapshot saldo. Saat data izin diubah, saldo record terkait dihitung ulang berdasarkan urutan tanggal dan waktu pembuatan agar koreksi historis ikut tercermin.

Import personel dari Excel tidak bergantung pada format header yang kaku. Sistem mencari header secara fleksibel, mempertahankan NRP sebagai string, menormalisasi tanggal lahir, menangani duplikasi, lalu mengembalikan ringkasan data yang ditambah, diperbarui, dilewati, dan error. Data personel juga dapat diekspor bersama riwayat dan saldo cuti.

Dashboard dan laporan

Dashboard menyajikan total izin, aktivitas bulan berjalan, rata-rata durasi, personel yang sedang izin, aktivitas terbaru, distribusi jenis izin, kalender izin, hari libur, ulang tahun, dan daftar insight seperti personel dengan frekuensi atau durasi izin tertinggi.

Halaman analitik menyediakan filter periode, jenis cuti, bagian, dan personel, dengan quick filter untuk rentang waktu umum. Hasil dapat ditampilkan sebagai ringkasan dan chart, lalu dicetak atau diekspor ke PDF dan Excel untuk kebutuhan administrasi.

Keamanan dan operasi

Password pengguna di-hash dengan bcrypt dan session login menghasilkan JWT dengan masa berlaku. Backend membedakan akses admin, super admin, dan atasan, sementara audit mencatat login, perubahan personel, operasi izin, perubahan pengguna, reset password, jenis cuti, IP, user agent, status, dan detail perubahan.

Notifikasi perubahan dikirim melalui WebSocket ke client yang terhubung. Frontend menampilkan toast, menyimpan riwayat notifikasi terbatas, melakukan refresh halaman yang relevan, dan mencoba reconnect dengan heartbeat. Scheduler mengambil data hari libur secara berkala, sedangkan task pemeliharaan menghapus audit yang lebih lama dari 365 hari.

Aplikasi mendukung SQLite untuk setup lokal serta MySQL melalui Docker Compose. Nginx meneruskan API dan WebSocket ke FastAPI, upload bukti disimpan di direktori persisten, dan deployment terdokumentasi melalui GitHub Actions, SSH, PM2, serta health check. Repository belum menunjukkan automated backend functional test suite; klaim keamanan production penuh tidak dibuat.