Dini Rahman

Web App Management Cuti

Web App Management Cuti
Tech Stack :
Blade

1. Ikhtisar Proyek

Aplikasi ini adalah Sistem Manajemen Cuti berbasis web yang dirancang untuk memfasilitasi proses pengajuan dan persetujuan cuti bagi pegawai. Aplikasi ini memisahkan fungsionalitas antara dua peran utama: Pegawai (karyawan) dan Admin (biasanya HR atau manajer).

  • Pegawai dapat masuk ke sistem untuk melihat sisa kuota cuti mereka, mengajukan cuti baru, dan melacak riwayat serta status pengajuan mereka.

  • Admin memiliki akses ke panel administrasi terpusat untuk mengelola seluruh data master (pengguna, jenis cuti) dan memproses permintaan cuti yang masuk (menyetujui atau menolak).

2. Arsitektur Teknis

Aplikasi ini dibangun di atas arsitektur monolitik dengan framework Laravel 12. Pemisahan antarmuka antara pengguna umum (pegawai) dan administrator dicapai melalui:

  • Frontend Pegawai: Menggunakan arsitektur Laravel tradisional dengan Blade templating engine untuk me-render tampilan di sisi server.

  • Panel Admin: Ditenagai oleh Filament 4, sebuah konstruktor panel admin untuk Laravel. Filament secara otomatis menyediakan antarmuka CRUD (Create, Read, Update, Delete) yang kaya fitur, tabel data yang interaktif, dan dasbor untuk manajemen back-office.

3. Tumpukan Teknologi (Tech Stack)

  • Backend:

    • Framework: Laravel 12

    • Bahasa: PHP 8.2+

    • Manajemen Dependensi: Composer

  • Frontend:

    • UI Framework: Tailwind CSS 4

    • Templating: Blade

    • Build Tool: Vite

    • Manajemen Dependensi: NPM

  • Admin Panel:

    • Framework: Filament 4

  • Database:

    • Menggunakan Eloquent ORM dari Laravel. Skema database (kemungkinan besar MySQL) didefinisikan melalui file migrasi Laravel.

  • Paket Pihak Ketiga Utama:

    • maatwebsite/excel: Untuk fungsionalitas ekspor/impor data ke format Excel (misalnya, rekapitulasi cuti).

    • barryvdh/laravel-dompdf: Untuk menghasilkan file PDF (misalnya, mencetak riwayat cuti pegawai).

4. Alur Kerja Aplikasi (Workflow)

a. Alur Otentikasi

  1. Pengguna mengakses halaman utama. Jika belum terotentikasi, mereka akan diarahkan ke halaman /login.

  2. Pengguna memasukkan kredensial (username/email dan password).

  3. Sistem memverifikasi kredensial dan peran pengguna.

  4. Berdasarkan peran:

    • Jika Admin, pengguna diarahkan ke panel admin di /admin.

    • Jika Pegawai, pengguna diarahkan ke dasbor pegawai di /pegawai/dashboard.

b. Alur Kerja Pegawai

  1. Dasbor: Setelah login, pegawai melihat dasbor yang menampilkan ringkasan informasi, seperti sisa cuti tahunan.

  2. Pengajuan Cuti: Pegawai mengakses menu "Ajukan Cuti", mengisi formulir yang berisi jenis cuti, tanggal mulai dan berakhir, serta alasan. Jika jenis cuti memerlukan bukti, ada opsi untuk mengunggah lampiran.

  3. Riwayat Cuti: Pegawai dapat melihat daftar semua cuti yang pernah diajukan beserta statusnya (pending, approved, rejected).

  4. Ekspor PDF: Dari halaman riwayat, pegawai dapat mengunduh rekap cuti mereka dalam format PDF.

  5. Profil: Pegawai dapat melihat data profil mereka.

c. Alur Kerja Admin

  1. Dasbor Admin: Admin login dan masuk ke panel Filament, yang menampilkan statistik ringkas seperti jumlah cuti yang tertunda atau siapa saja yang sedang cuti.

  2. Manajemen Permintaan Cuti: Admin melihat daftar semua permintaan cuti yang masuk. Mereka dapat memfilter dan mencari permintaan spesifik.

  3. Proses Persetujuan: Admin dapat membuka detail permintaan, meninjau informasi dan lampiran, lalu memberikan persetujuan (approve) atau penolakan (reject) dengan menambahkan catatan jika perlu.

  4. Manajemen Pengguna: Admin dapat menambah, mengubah, atau menonaktifkan akun pegawai.

  5. Manajemen Jenis Cuti: Admin mengelola jenis-jenis cuti yang tersedia di perusahaan (misalnya, Cuti Tahunan, Cuti Sakit).

  6. Pelaporan: Admin dapat mengakses halaman rekapitulasi untuk melihat laporan cuti secara keseluruhan dan mungkin mengekspornya ke format Excel.

5. Skema Database

Terdapat tiga model utama yang merepresentasikan struktur data aplikasi:

  • User:

    • Menyimpan data pengguna, termasuk name, email, password, nip, jabatan, role (admin atau pegawai), dan jumlah_cuti (kuota cuti).

    • Memiliki relasi one-to-many ke model LeaveRequest.

  • LeaveType:

    • Tabel master untuk jenis cuti. Berisi name (misalnya, "Cuti Tahunan") dan requires_attachment (boolean).

    • Memiliki relasi one-to-many ke model LeaveRequest.

  • LeaveRequest:

    • Tabel transaksi utama yang mencatat setiap pengajuan cuti.

    • Berisi user_id, leave_type_id, start_date, end_date, total_days, reason, status (pending, approved, rejected), dan attachment.

    • Memiliki relasi belongs-to ke model User dan LeaveType.

6. Ringkasan Fitur Utama

  • [x] Otentikasi dan otorisasi berbasis peran (Admin & Pegawai).

  • [x] Dasbor terpisah untuk Admin dan Pegawai.

  • [x] Modul pengajuan cuti dengan unggah lampiran.

  • [x] Perhitungan sisa kuota cuti tahunan secara otomatis.

  • [x] Manajemen permintaan cuti (approve/reject) oleh Admin.

  • [x] Panel admin lengkap (Filament) untuk manajemen data master.

  • [x] Ekspor data ke PDF dan Excel untuk pelaporan.