Web App Management Cuti

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
Pengguna mengakses halaman utama. Jika belum terotentikasi, mereka akan diarahkan ke halaman
/login.Pengguna memasukkan kredensial (username/email dan password).
Sistem memverifikasi kredensial dan peran pengguna.
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
Dasbor: Setelah login, pegawai melihat dasbor yang menampilkan ringkasan informasi, seperti sisa cuti tahunan.
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.
Riwayat Cuti: Pegawai dapat melihat daftar semua cuti yang pernah diajukan beserta statusnya (
pending,approved,rejected).Ekspor PDF: Dari halaman riwayat, pegawai dapat mengunduh rekap cuti mereka dalam format PDF.
Profil: Pegawai dapat melihat data profil mereka.

c. Alur Kerja Admin
Dasbor Admin: Admin login dan masuk ke panel Filament, yang menampilkan statistik ringkas seperti jumlah cuti yang tertunda atau siapa saja yang sedang cuti.
Manajemen Permintaan Cuti: Admin melihat daftar semua permintaan cuti yang masuk. Mereka dapat memfilter dan mencari permintaan spesifik.
Proses Persetujuan: Admin dapat membuka detail permintaan, meninjau informasi dan lampiran, lalu memberikan persetujuan (
approve) atau penolakan (reject) dengan menambahkan catatan jika perlu.Manajemen Pengguna: Admin dapat menambah, mengubah, atau menonaktifkan akun pegawai.
Manajemen Jenis Cuti: Admin mengelola jenis-jenis cuti yang tersedia di perusahaan (misalnya, Cuti Tahunan, Cuti Sakit).
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(adminataupegawai), danjumlah_cuti(kuota cuti).Memiliki relasi one-to-many ke model
LeaveRequest.
LeaveType:Tabel master untuk jenis cuti. Berisi
name(misalnya, "Cuti Tahunan") danrequires_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), danattachment.Memiliki relasi belongs-to ke model
UserdanLeaveType.
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.

