feat: tambah role editor, workflow post, leaderboard, rekap kehadiran, kategori kas dengan type, seeder lengkap
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
Sistem web production-ready untuk **Organisasi Pemuda Desa Persegi**, berlokasi di Desa Karangdadap, Kecamatan Kalibagor, Kabupaten Banyumas.
|
||||
|
||||
**URL Production:** https://persegi.nyawiji.net
|
||||
|
||||
---
|
||||
|
||||
## Teknologi
|
||||
@@ -14,7 +16,7 @@ Sistem web production-ready untuk **Organisasi Pemuda Desa Persegi**, berlokasi
|
||||
| Database | MySQL / MariaDB |
|
||||
| Frontend Publik | Blade + Tailwind CSS |
|
||||
| Realtime | Livewire |
|
||||
| Queue | Supervisor |
|
||||
| Queue | Supervisor (database driver) |
|
||||
|
||||
---
|
||||
|
||||
@@ -24,33 +26,37 @@ Sistem web production-ready untuk **Organisasi Pemuda Desa Persegi**, berlokasi
|
||||
app/
|
||||
├── Filament/
|
||||
│ ├── Resources/
|
||||
│ │ ├── Activities/ # Manajemen kegiatan
|
||||
│ │ ├── Approvals/ # Multi-approval
|
||||
│ │ ├── Audits/ # Audit internal
|
||||
│ │ ├── CashCategories/ # Kategori kas
|
||||
│ │ ├── CashRecords/ # Transaksi kas
|
||||
│ │ ├── ContactMessages/# Pesan dari publik
|
||||
│ │ ├── Divisions/ # Divisi organisasi
|
||||
│ │ ├── Posts/ # Konten publik
|
||||
│ │ ├── Users/ # Manajemen anggota
|
||||
│ │ └── Votes/ # Sistem voting
|
||||
│ │ ├── Activities/ # Manajemen kegiatan
|
||||
│ │ ├── Approvals/ # Multi-approval
|
||||
│ │ ├── Audits/ # Audit internal
|
||||
│ │ ├── CashCategories/ # Kategori kas
|
||||
│ │ ├── CashRecords/ # Transaksi kas
|
||||
│ │ ├── ContactMessages/ # Pesan dari publik
|
||||
│ │ ├── Divisions/ # Divisi organisasi
|
||||
│ │ ├── MemberDues/ # Iuran anggota
|
||||
│ │ ├── MemberPoints/ # Poin anggota
|
||||
│ │ ├── Posts/ # Konten publik
|
||||
│ │ ├── Users/ # Manajemen anggota
|
||||
│ │ └── Votes/ # Sistem voting
|
||||
│ └── Widgets/
|
||||
│ ├── StatsOverview.php # Widget dashboard utama
|
||||
│ ├── CashStatsWidget.php # Widget statistik kas
|
||||
│ └── ActivityLogWidget.php # Widget log aktivitas
|
||||
├── Models/
|
||||
│ ├── User.php, Division.php, Activity.php
|
||||
│ ├── User.php, Division.php
|
||||
│ ├── Activity.php, MemberStatusLog.php, ActivityLog.php
|
||||
│ ├── MemberDue.php, MemberPoint.php
|
||||
│ ├── CashRecord.php, CashCategory.php
|
||||
│ ├── Vote.php, VoteItem.php
|
||||
│ ├── Approval.php, ApprovalItem.php
|
||||
│ ├── Audit.php, AuditResponse.php
|
||||
│ ├── MemberStatusLog.php, ActivityLog.php
|
||||
│ ├── Post.php, ContactMessage.php
|
||||
│ └── Post.php, ContactMessage.php
|
||||
└── Observers/
|
||||
├── CashRecordObserver.php # Log + threshold approval/voting
|
||||
├── ActivityObserver.php # Log approval & eksekusi kegiatan
|
||||
├── UserObserver.php # Log perubahan status anggota
|
||||
└── VoteObserver.php # Notifikasi voting baru ke semua user
|
||||
├── ActivityObserver.php # Log approval & eksekusi kegiatan
|
||||
├── CashRecordObserver.php # Log + threshold approval/voting otomatis
|
||||
├── VoteObserver.php # Notifikasi voting baru ke semua user
|
||||
└── PostObserver.php # Poin +5 saat artikel dipublish
|
||||
```
|
||||
|
||||
---
|
||||
@@ -59,12 +65,12 @@ app/
|
||||
|
||||
| Role | Deskripsi |
|
||||
|---|---|
|
||||
| `super_admin` | Full akses, override semua, semua aksi di-log |
|
||||
| `super_admin` | Full akses via gate, semua aksi di-log |
|
||||
| `ketua` | Approval kegiatan, verifikasi kas, lihat semua data |
|
||||
| `bendahara` | Input & kelola transaksi kas |
|
||||
| `bendahara` | Input & kelola transaksi kas dan iuran |
|
||||
| `pengurus` | Submit kegiatan ke pending |
|
||||
| `anggota` | Akses terbatas, bisa voting |
|
||||
| `auditor` | Read-only + bisa buat temuan audit |
|
||||
| `anggota` | Akses terbatas, bisa voting dan buat artikel |
|
||||
| `auditor` | Read-only semua + bisa buat temuan audit |
|
||||
|
||||
---
|
||||
|
||||
@@ -82,7 +88,11 @@ Threshold otomatis saat transaksi dibuat:
|
||||
|
||||
- Transaksi yang belum diverifikasi tidak masuk ke total kas
|
||||
- Setelah `verified_at` terisi, data terkunci (tidak bisa diubah/dihapus)
|
||||
- Widget statistik kas tampil di halaman transaksi: total saldo, pemasukan/pengeluaran bulan ini, saldo bulan lalu
|
||||
|
||||
### Iuran Anggota
|
||||
|
||||
- Satu iuran per anggota per periode (format `YYYY-MM`)
|
||||
- Unique constraint `(user_id, period)` mencegah duplikasi
|
||||
|
||||
### Kegiatan
|
||||
|
||||
@@ -91,6 +101,8 @@ draft → pending → approved → (executed_at diisi)
|
||||
→ rejected
|
||||
```
|
||||
|
||||
- Draft hanya terlihat oleh kreator dan `super_admin`
|
||||
|
||||
### Voting
|
||||
|
||||
- Semua user bisa melihat dan memberi suara
|
||||
@@ -98,6 +110,15 @@ draft → pending → approved → (executed_at diisi)
|
||||
- Notifikasi ke semua user saat voting baru dibuat
|
||||
- Mayoritas >50% untuk lolos
|
||||
|
||||
### Sistem Poin
|
||||
|
||||
| Event | Poin |
|
||||
|---|---|
|
||||
| Hadir kegiatan | +10 |
|
||||
| Artikel dipublish | +5 |
|
||||
|
||||
- Duplikasi dicegah via `firstOrCreate` dengan key `(user_id, source_type, source_id)`
|
||||
|
||||
### Notifikasi
|
||||
|
||||
- Database notifications via Filament
|
||||
@@ -106,7 +127,7 @@ draft → pending → approved → (executed_at diisi)
|
||||
|
||||
### Konten Publik
|
||||
|
||||
- Website publik berbasis Blade (font: Roboto + Playfair Display)
|
||||
- Website publik berbasis Blade
|
||||
- Artikel/berita, halaman kegiatan, form kontak
|
||||
- Link ke website publik tersedia di sidebar admin
|
||||
|
||||
@@ -129,7 +150,8 @@ composer install
|
||||
cp .env.example .env
|
||||
php artisan key:generate
|
||||
php artisan migrate --seed
|
||||
php artisan shield:generate --panel=admin
|
||||
php artisan shield:generate --panel=admin --all -n
|
||||
php artisan db:seed --class=PermissionSeeder --force
|
||||
php artisan shield:super-admin --user=1
|
||||
```
|
||||
|
||||
@@ -156,15 +178,12 @@ sudo supervisorctl start persegi-worker
|
||||
### Production
|
||||
|
||||
```bash
|
||||
php artisan migrate
|
||||
php artisan shield:generate --panel=admin --all -n
|
||||
php artisan db:seed --class=PermissionSeeder --force
|
||||
php artisan permission:cache-reset
|
||||
php artisan filament:optimize-clear
|
||||
php artisan filament:optimize
|
||||
php artisan config:cache
|
||||
php artisan route:cache
|
||||
php artisan view:cache
|
||||
php artisan permission:cache-reset
|
||||
php artisan filament:optimize
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kontribusi
|
||||
|
||||
Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk panduan berkontribusi.
|
||||
|
||||
Reference in New Issue
Block a user