1. Informasi
- Nama Aplikasi: Portal Kerja Indonesia (MVP)
- Tech Stack: Laravel 10 (PHP 8.1+), MySQL 8.0, Blade Template, Custom CSS (Native).
- Arsitektur: Model-View-Controller (MVC) dengan Repository Pattern untuk modul Publik.
- Status Pengembangan: 100% Completed & Ready to Use.
2. Matriks Fitur Berdasarkan Role (Aktor)
Berikut adalah detail fitur yang bisa dilakukan oleh setiap pengguna:
A. Role: Guest (Pengunjung Tanpa Login)
- Landing Page: Melihat halaman utama dengan Hero Section, Search Bar, dan Kategori Populer.
- Pencarian Lowongan: Mencari lowongan berdasarkan Kata Kunci, Kategori, dan Lokasi.
- Filter & Pagination: Memfilter hasil pencarian dan navigasi halaman.
- Detail Lowongan: Melihat deskripsi lengkap, persyaratan, gaji, dan profil perusahaan.
- Call to Action: Tombol "Lamar" akan mengarahkan ke Login/Register jika belum masuk.
B. Role: Kandidat (Job Seeker)
- Registrasi & Login: Mendaftar sebagai "Pencari Kerja".
- Dashboard
Kandidat:
- Melihat ringkasan profil.
- Melihat status kelengkapan CV.
- Melihat tabel riwayat lamaran (Posisi, Perusahaan, Tanggal, Status Lamaran).
- Manajemen CV: Mengunggah (Upload) dan Mengganti file CV (PDF/DOCX, Max 2MB).
- Melamar
Kerja (Apply):
- Sistem mencegah melamar tanpa CV.
- Sistem mencegah Double Apply (melamar 2x di posisi sama).
- Notifikasi Status: Melihat perubahan status lamaran (misal: dari "Submitted" ke "Wawancara").
C. Role: Perusahaan (Recruiter)
- Registrasi & Login: Mendaftar sebagai "Perusahaan".
- Setup Profil: Wajib mengisi Nama Perusahaan, Alamat, dan Deskripsi saat pertama kali login.
- Dashboard Perusahaan: Statistik ringkas dan daftar lowongan aktif.
- Manajemen
Lowongan (CRUD):
- Create: Membuat lowongan baru (Hanya bisa jika status akun Verified oleh Admin).
- Read: Melihat daftar lowongan sendiri.
- Update: Mengedit konten lowongan atau mengubah status (Publish/Close).
- Delete: Menghapus lowongan (Soft Delete).
- Manajemen
Pelamar:
- Melihat jumlah pelamar real-time per lowongan.
- Melihat detail kandidat (Nama, Email, Cover Letter).
- Download CV: Mengunduh file CV kandidat.
- Update Status: Mengubah status kandidat (Baru -> Review -> Wawancara -> Terima/Tolak).
- Notifikasi Email: Menerima email notifikasi saat ada pelamar baru (via Log/Mailtrap).
D. Role: Administrator (Super Admin)
- Login Khusus: Login dengan hak akses tertinggi.
- Dashboard Admin: Statistik total User, Perusahaan, dan Lowongan.
- Verifikasi
Perusahaan:
- Melihat daftar perusahaan baru yang mendaftar.
- Melakukan Approval (Verifikasi) agar perusahaan tersebut bisa memposting lowongan.
- Moderasi Lowongan: Melihat lowongan terbaru dan menutup paksa (Reject) lowongan yang melanggar aturan.
3. Struktur Menu & Navigasi (Sitemap)
Aplikasi memiliki Navigasi Dinamis di bagian atas (Navbar) yang berubah sesuai status login:
1. Navigasi Publik (Semua Orang)
- Brand Logo: Kembali ke Home.
- Beranda: Halaman Utama.
- Cari Lowongan: Halaman List Lowongan.
- Masuk / Daftar: (Hanya muncul jika belum login).
2. Navigasi Saat Login (Dropdown & Dashboard Link)
Tombol "Dashboard" di navbar akan mengarah ke rute berbeda sesuai role:
- Jika Admin: Mengarah ke
/admin/dashboard.
- Sub-Menu: Dashboard Stats, Verifikasi Table, Moderasi Table.
- Jika
Perusahaan:
Mengarah ke /company/dashboard.
- Sub-Menu: List Lowongan, Buat Lowongan Baru, Edit Profil.
- Halaman Detail: Kelola Pelamar (Table Pelamar).
- Jika
Kandidat:
Mengarah ke /candidate/dashboard.
- Sub-Menu: Profil Saya, Upload CV Form, Riwayat Lamaran Table.
4. Implementasi Teknis & Keamanan
Fitur "di balik layar" yang menjamin performa dan keamanan aplikasi:
- Repository Pattern: Digunakan pada modul Pencarian Lowongan (JobRepository) untuk memisahkan logika query dari controller, memudahkan maintenance.
- Middleware Security:
- auth: Memastikan user login.
- verified: (Breeze default) verifikasi email.
- admin: Proteksi khusus halaman Admin.
- Role Check: Redirect otomatis jika Kandidat mencoba masuk halaman Perusahaan, dan sebaliknya.
- CV disimpan di folder storage/app/public/cvs.
- Nama file di-hash (acak) untuk mencegah penebakan nama file.
- Validasi MIME Type ketat (hanya PDF/DOCX).
- Foreign Key Constraint (Cascade Delete).
- Indexing pada kolom pencarian (title, status, job_type).
- Perusahaan Unverified diblokir dari posting lowongan.
- Kandidat Tanpa CV diblokir dari melamar.



Loading ...
