2026-04-05 23:34:33 +07:00

Persegi — Sistem Manajemen Organisasi Pemuda Desa

Sistem web production-ready untuk Organisasi Pemuda Desa Persegi, berlokasi di Desa Karangdadap, Kecamatan Kalibagor, Kabupaten Banyumas.

URL Production: https://persegi.nyawiji.net


Teknologi

Layer Stack
Backend Laravel 13
Admin Panel Filament 5.x
Authorization Filament Shield + Spatie Permission
Database MySQL / MariaDB
Frontend Publik Blade + Tailwind CSS
Realtime Livewire
Queue Supervisor (database driver)

Struktur Direktori

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
│   │   ├── 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, MemberStatusLog.php, ActivityLog.php
│   ├── MemberDue.php, MemberPoint.php
│   ├── CashRecord.php, CashCategory.php
│   ├── Vote.php, VoteItem.php
│   ├── Approval.php, ApprovalItem.php
│   ├── Audit.php, AuditResponse.php
│   └── Post.php, ContactMessage.php
└── Observers/
    ├── UserObserver.php        # Log perubahan status anggota
    ├── 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

Role & Hak Akses

Role Deskripsi
super_admin Full akses via gate, semua aksi di-log
ketua Approval kegiatan, verifikasi kas, lihat semua data
bendahara Input & kelola transaksi kas dan iuran
pengurus Submit kegiatan ke pending
anggota Akses terbatas, bisa voting dan buat artikel
auditor Read-only semua + bisa buat temuan audit

Fitur

Keuangan (Kas)

Threshold otomatis saat transaksi dibuat:

Jumlah Alur
< Rp 500.000 Langsung bisa diverifikasi
Rp 500.000 Rp 2.000.000 Notifikasi ke ketua → perlu approval ketua
> Rp 2.000.000 Voting dibuat otomatis → perlu mayoritas >50%
  • Transaksi yang belum diverifikasi tidak masuk ke total kas
  • Setelah verified_at terisi, data terkunci (tidak bisa diubah/dihapus)

Iuran Anggota

  • Satu iuran per anggota per periode (format YYYY-MM)
  • Unique constraint (user_id, period) mencegah duplikasi

Kegiatan

draft → pending → approved → (executed_at diisi)
                → rejected
  • Draft hanya terlihat oleh kreator dan super_admin

Voting

  • Semua user bisa melihat dan memberi suara
  • Tipe: activity, finance, general
  • 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
  • Polling otomatis setiap 30 detik
  • Queue diproses via Supervisor

Konten Publik

  • Website publik berbasis Blade
  • Artikel/berita, halaman kegiatan, form kontak
  • Link ke website publik tersedia di sidebar admin

Log & Audit Trail

Event Dicatat di
Perubahan status anggota member_status_logs
Transaksi kas baru/verifikasi activity_logs
Approval/eksekusi kegiatan activity_logs

Instalasi

composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php artisan shield:generate --panel=admin --all -n
php artisan db:seed --class=PermissionSeeder --force
php artisan shield:super-admin --user=1

Akses admin panel: /dashboard

Queue Worker (Supervisor)

[program:persegi-worker]
command=php /path/to/project/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=$USER
redirect_stderr=true
stdout_logfile=/var/log/persegi-worker.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start persegi-worker

Production

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
S
Description
Persegi - Sistem Organisasi Basis Laravel + Filament
Readme 3.5 MiB
Languages
PHP 71.2%
Blade 28.4%
CSS 0.3%
JavaScript 0.1%