70 lines
4.5 KiB
Markdown
70 lines
4.5 KiB
Markdown
# Dokumentasi Backend
|
|
|
|
## Ringkasan
|
|
|
|
- Framework: Laravel (PHP)
|
|
- Struktur: MVC (Models, Views, Controllers) dengan routes di `routes/web.php`.
|
|
- Backend ini memisahkan akses berdasarkan peran pengguna, jadi tiap role hanya melihat fitur yang memang menjadi tanggung jawabnya.
|
|
|
|
## Arsitektur Utama
|
|
|
|
- Namespace utama: `App\\Http\\Controllers` untuk controller, `App\\Models` untuk model.
|
|
- Shared middleware: `auth`, `role` untuk membatasi akses (admin, ketua, pembina).
|
|
- `auth` memastikan pengguna sudah login sebelum masuk ke area internal.
|
|
- `role` membedakan hak akses berdasarkan jabatan, misalnya admin untuk pengelolaan data utama, ketua untuk operasional organisasi, dan pembina untuk pengawasan serta validasi.
|
|
|
|
## Routes & Grup
|
|
|
|
- Guest routes: login, register (`routes/web.php`).
|
|
- Authenticated routes: grouped di bawah `auth` middleware dengan redirect dashboard dan notifikasi.
|
|
- Role-based groups: `admin`, `ketua`, `pembina` — masing-masing punya route resource untuk `organisasi`, `kegiatan`, `dokumentasi`, `laporan`, validasi, dsb.
|
|
|
|
Secara sederhana, alurnya seperti ini: pengguna masuk lewat login, sistem menentukan perannya, lalu pengguna diarahkan ke dashboard yang sesuai. Setelah itu route yang tersedia juga menyesuaikan role yang dimiliki.
|
|
|
|
Contoh file route: [routes/web.php](routes/web.php)
|
|
|
|
## Models (ringkasan)
|
|
|
|
- `User` — model pengguna; lokasi: [app/Models/User.php](app/Models/User.php).
|
|
- `Organisasi` — data organisasi; lokasi: [app/Models/Organisasi.php](app/Models/Organisasi.php).
|
|
- `Kegiatan` — data kegiatan/agenda; lokasi: [app/Models/Kegiatan.php](app/Models/Kegiatan.php).
|
|
- `Dokumentasi` — unggahan foto/dokumentasi kegiatan; lokasi: [app/Models/Dokumentasi.php](app/Models/Dokumentasi.php).
|
|
- `LaporanKegiatan` — laporan kegiatan dan attachment; lokasi: [app/Models/LaporanKegiatan.php](app/Models/LaporanKegiatan.php).
|
|
- `Session` — sesi/timeline kegiatan; lokasi: [app/Models/Session.php](app/Models/Session.php).
|
|
|
|
Untuk detail kolom, lihat migrations di `database/migrations/`.
|
|
|
|
Relasi penting yang terlihat di model adalah `Kegiatan` yang terhubung ke `Organisasi`, lalu memiliki relasi ke `Dokumentasi` dan `LaporanKegiatan`. Artinya satu kegiatan bisa punya banyak dokumentasi dan beberapa laporan pendukung.
|
|
|
|
Contoh isi model `Kegiatan` juga menunjukkan field yang sering dipakai backend, seperti nama kegiatan, tanggal mulai, tempat, proposal, status, dan keterangan.
|
|
|
|
## Migrations & Skema
|
|
|
|
- Semua migration ada di `database/migrations/` (contoh: `create_users_table`, `create_organisasi_table`, `create_kegiatan_table`, `create_dokumentasi_table`, `create_laporan_kegiatan_table`, `create_sessions_table`, `create_notifications_table`).
|
|
- Jalankan: `php artisan migrate` untuk membuat tabel.
|
|
- Migration di project ini menjadi sumber utama untuk memahami struktur data karena dari sanalah nama tabel, kolom, tipe data, dan relasi dasar disusun.
|
|
|
|
## Controllers & Alur Kerja
|
|
|
|
- Controllers dikelompokkan menurut role:
|
|
- `App\\Http\\Controllers\\Admin\\*` — manajemen pengguna, organisasi, validasi, laporan, dokumentasi.
|
|
- `App\\Http\\Controllers\\Ketua\\*` — fitur yang diakses ketua organisasi (CRUD kegiatan, dokumentasi, laporan, jadwal).
|
|
- `App\\Http\\Controllers\\Pembina\\*` — fitur untuk pembina, termasuk validasi dan pemantauan.
|
|
- Controller otentikasi: `App\\Http\\Controllers\\AuthController.php` (login, register, logout, redirect dashboard).
|
|
- Notifikasi: `App\\Http\\Controllers\\NotificationController.php` — baca notifikasi (read-all, read-one).
|
|
|
|
Mayoritas controller di sini mengikuti pola CRUD: menampilkan daftar data, menyimpan data baru, memperbarui data lama, dan menghapus data. Beberapa controller juga punya aksi tambahan seperti validasi approve/reject dan ekspor PDF untuk laporan.
|
|
|
|
Lihat folder controller untuk implementasi: [app/Http/Controllers](app/Http/Controllers)
|
|
|
|
## Notifikasi & Workflow
|
|
|
|
- Notifikasi disimpan di tabel `notifications` (migration tersedia) dan dikirim via kelas notifikasi di `app/Notifications`.
|
|
- Ada workflow validasi kegiatan: route `approve`/`reject` pada controller `ValidasiController` untuk Admin/Pembina.
|
|
- Workflow validasi ini penting karena status kegiatan bisa berubah berdasarkan keputusan pihak yang berwenang, sehingga data yang tampil ke pengguna lain ikut menyesuaikan.
|
|
|
|
## File Storage
|
|
|
|
- File upload (dokumentasi, laporan) disimpan di `storage/` dan diakses via symbolic link `public/storage` jika diperlukan.
|
|
- Bagian ini biasanya dipakai untuk proposal, dokumentasi foto, dan file laporan yang diunduh kembali oleh pengguna.
|