# Product Requirements Document (PRD)
**Proyek:** Website Profil dan Sistem Informasi Organisasi PPPFI (Perkumpulan Prodi Pendidikan Fisika Indonesia)
**Versi:** 1.0
**Tanggal:** 1 Agustus 2026

## 1. Ringkasan Eksekutif
Sistem ini merupakan platform digital terpadu untuk PPPFI yang mencakup website profil (frontend) yang dapat diakses publik, serta sistem informasi manajemen (backend) berbasis portal anggota dan admin. Proyek ini bertujuan memfasilitasi informasi publik, rekam jejak kegiatan (publikasi, jurnal, MOU), serta manajemen keanggotaan dan registrasi kegiatan (event) secara internal.

## 2. Tech Stack & Infrastruktur Dasar
Berdasarkan spesifikasi yang telah ditetapkan:
*   **Bahasa:** PHP 8.4
*   **Framework Core:** Laravel 13
*   **Admin Panel / TALL Stack:** Filament v5
*   **Role & Permission Management:** Spatie Permission terintegrasi dengan Filament Shield (`bezhansalleh/filament-shield`)
*   **Database:** Relational Database (MySQL / PostgreSQL)

## 3. Manajemen Aktor & Akses (Roles)
Sistem menggunakan **Spatie Shield** untuk mengatur kapabilitas berdasarkan peran.
*   **Admin:** Memiliki kontrol penuh terhadap manajemen web statis, master data, publikasi, manajemen seluruh kegiatan, dan pengawasan akun anggota.
*   **Anggota (Member):** Pengguna terdaftar yang memiliki profil terverifikasi, dapat mengelola datanya sendiri, dan melakukan registrasi atau pendaftaran kegiatan/webinar melalui panel backend.

## 4. Struktur Jabatan Organisasi (Position Hierarchy)
Di dalam master data keanggotaan/kepengurusan, terdapat relasi atau atribut jabatan yang akan ditampilkan pada profil dan halaman "Pengurus". Hierarki jabatan mencakup:
1.  Ketua Umum
2.  Wakil Ketua Umum
3.  Sekretaris
4.  Bendahara
5.  Pengawas
6.  Ketua Seksi Bidang
7.  Anggota

## 5. Spesifikasi Frontend (Website Publik)
Sisi muka (Frontend) berfungsi sebagai etalase informasi organisasi dan gerbang utama pendaftaran.

*   **Beranda (Home):** Menampilkan slider, logo kerjasama, ringkasan profil, dan highlight berita/kegiatan terbaru.
*   **Tentang PPPFI:**
    *   Sekilas PPPFI (Sejarah/Deskripsi Umum)
    *   Visi & Misi
    *   Susunan Pengurus (berdasarkan hierarki jabatan)
    *   HelpDesk / Kontak
*   **Kegiatan:** Menampilkan daftar kegiatan yang akan dan telah dilaksanakan (contoh: Webinar PPPFI).
*   **Publikasi:**
    *   Jurnal PPPFI
    *   MOU / Kerjasama
*   **Keanggotaan:** Informasi cara bergabung, syarat menjadi anggota.
*   **Autentikasi:**
    *   Pendaftaran Anggota (Sign Up Form) terhubung dengan referensi Data Kampus (PTKIN/PTN/Swasta).
    *   Login Anggota

## 6. Spesifikasi Backend (Filament v5 Admin Panel)
Struktur menu backend dipecah berdasarkan Role yang mengakses. Referensi dari Mindmap `image_14ad9f.jpg`.

### 6.1. Role: Admin
*   **Dasbor:** Statistik ringkas (jumlah anggota, kegiatan aktif, jumlah pendaftar, dll).
*   **Profil Anda:** Pengaturan profil admin yang login.
*   **Manajemen Akun:** Mengelola akses, reset password, persetujuan/verifikasi akun pengguna, integrasi Spatie Shield (Roles & Permissions).
*   **Manajemen Keanggotaan:** Database seluruh anggota aktif/pasif, filter berdasarkan institusi dan jabatan.
*   **Manajemen Web (Static):**
    *   Kelola Logo
    *   Kelola Slider Home & Uraian
    *   Kelola Logo Kerjasama
    *   Kelola Tentang PPPFI (Sub-menu: Kelola Sekilas PPPFI, Kelola Visi Misi, Kelola Riwayat Pengurus)
    *   Kelola Menu (Dynamic navigation bar adjustments)
*   **Manajemen Kegiatan:** Membuat kegiatan baru (Webinar, Seminar, dll), mengatur kuota, tanggal, harga (jika ada), dan melihat daftar peserta (anggota) yang mendaftar.
*   **Manajemen Publikasi:** Modul untuk upload/input link Jurnal dan artikel rilis.
*   **Manajemen MOU:** Modul untuk mencatat arsip kerjasama dan file-file kesepahaman.
*   **Kelola Master:**
    *   Data Kampus PTKIN
    *   Data Universitas PTN dan Swasta (digunakan untuk auto-complete / dropdown pada pendaftaran biodata)

### 6.2. Role: Members (Anggota)
*   **Dasbor:** Informasi singkat terkait status keanggotaan dan event terdekat.
*   **Profil Anggota:** Tampilan kartu anggota / biodata lengkap.
*   **Kelola Data Anggota:** Update informasi pribadi, upload foto, update instansi / riwayat pendidikan.
*   **Registrasi Kegiatan:** Portal untuk mendaftar acara/webinar yang dibuka oleh PPPFI (Detail pola pada bagian 7).

## 7. Pola Alur (Flow) Registrasi Kegiatan Anggota
Sesuai permintaan, berikut adalah *mindset/pola* sistem untuk anggota melakukan registrasi kegiatan di dalam panel akun mereka:

1.  **Event Discovery:** Anggota login ke portal Filament (Backend). Pada sidebar, anggota klik menu **"Registrasi Kegiatan"**.
2.  **Katalog Kegiatan:** Sistem menampilkan *Grid View / List View* dari kegiatan yang statusnya "Upcoming" atau "Open Registration" (Diambil dari tabel *Kegiatan* yang dibuat oleh Admin).
3.  **Detail & Enroll:** Anggota memilih salah satu kegiatan, melihat detail acara (Narasumber, Tanggal, Link Zoom, Kuota). Terdapat tombol aksi **"Daftar Sekarang"**.
4.  **Konfirmasi Form:** Sebuah *Modal Form (Filament Action)* muncul. Data diri anggota sudah terisi otomatis (Auto-fill). Jika event membutuhkan isian tambahan (seperti pertanyaan untuk pemateri), anggota dapat mengisinya di sini.
5.  **Status Registrasi (Pivot):** Setelah *submit*, data masuk ke tabel `activity_member` (Pivot). Status awal: `Menunggu Verifikasi` atau `Terdaftar` (tergantung apakah kegiatan berbayar atau gratis).
6.  **Notifikasi:** Anggota menerima notifikasi sukses. Link sertifikat dan tautan acara (Webinar) hanya akan terbuka/tampil pada menu "Riwayat Kegiatan" menjelang acara dimulai atau jika status kepesertaan telah diverifikasi oleh admin.
7.  **Data Terpusat:** Admin dapat mengunduh data peserta langsung dari modul "Manajemen Kegiatan" dalam bentuk Excel/CSV.

## 8. Persyaratan Ekstra / Non-Fungsional
*   **Keamanan (Security):** Implementasi otentikasi ketat, proteksi rute halaman profil khusus, validasi master data untuk mencegah redundansi (contoh: double input PTN).
*   **Responsivitas:** Frontend (publik) dan Backend (Filament) harus sepenuhnya responsive di perangkat mobile.
*   **SEO & Performa:** Frontend memiliki meta tags yang proper agar publikasi (jurnal/MOU) bisa dengan mudah di-indeks oleh mesin pencari.
