zivar / laravel-starter
Zivar System Laravel Starter Kit - RBAC, Audit Logging, Media Center & System Telemetry
Package info
github.com/ravizulfikar/zivar-laravel-basic
Language:HTML
pkg:composer/zivar/laravel-starter
Requires
- php: ^8.3
- laravel/framework: ^13.8
- laravel/tinker: ^3.0
- livewire/livewire: ^4.3
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pail: ^1.2.5
- laravel/pao: ^1.0.6
- laravel/pint: ^1.27
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- phpunit/phpunit: ^12.5.12
README
Zivar Laravel Starter Kit adalah enterprise-grade starter package untuk proyek Laravel 13 & Livewire 4 modern yang dilengkapi dengan manajemen peranan RBAC granular, rekam jejak audit log immutable, pusat berkas media polimorfik (dengan pratinjau Fancybox v5 & chunk upload), telemetri performa sistem, serta tema premium Vuexy UI.
โจ Fitur Utama (Core Modules)
| Modul | Deskripsi & Kapabilitas |
|---|---|
| ๐ค User Management | Manajemen akun pengguna, avatar upload dengan indikator progres realtime 60FPS, indikator kekuatan password client-side, serta penetapan peranan (assign roles) via Select2 Multi-Select. |
| ๐ก๏ธ RBAC Permission Matrix | Pengaturan hak akses granular (Create, Read, Update, Delete) per modul per role. Dilengkapi In-Memory Permission Map Caching selama 1 jam & invalidasi cache otomatis. |
| ๐ Immutable Audit Log Trail | Perekaman otomatis setiap mutasi data (created, updated, deleted) via trait Auditable. Dilengkapi inspeksi modal Diff View Inline 3-kolom untuk melihat perubahan nilai atribut sebelum & sesudah. |
| ๐ Polymorphic Media Center | Manajemen berkas polimorfik (HasMedia trait) dengan integrasi Fancyapps Fancybox v5 Lightbox, streaming berkas publik/privat terproteksi, penyaringan kategori, dan pengunggahan berkas besar via Chunked Upload. |
| ๐ Telemetry Metrics Center | Dashboard performa & kesehatan sistem real-time (/metrics) meliputi konsumsi RAM, latensi PDO database, penggunaan disk OS, distribusi rekaman 6 tabel database, dan konfigurasi PHP Engine. |
| ๐จ Vuexy Premium UI | Interface modern bertema Vuexy dengan mode Terang/Gelap (Light/Dark mode switcher), jQuery 3.7.1, Toastr.js, dan SweetAlert2. |
๐ Persyaratan Sistem (Requirements)
- PHP:
>= 8.3 - Laravel Framework:
>= 13.0 - Livewire:
>= 4.0 - Database: MySQL 8.0+ / PostgreSQL / SQLite 3
- Cache & Session: Redis 7.2+ (Direkomendasikan untuk produksi / K8s)
โก Panduan Instalasi (Installation)
1. Require Package via Composer
Jalankan perintah berikut pada proyek Laravel baru Anda:
composer require zivar/laravel-starter
2. Jalankan Installer Zivar
Eksekusi command installer bawaan Zivar untuk mempublikasikan konfigurasi, aset Vuexy UI, menjalankan migrasi database, dan mengisi seeder master data:
php artisan zivar:install
Perintah di atas secara otomatis akan mengeksekusi:
php artisan vendor:publish --tag=zivar-configphp artisan vendor:publish --tag=zivar-assetsphp artisan storage:linkphp artisan migratephp artisan db:seed
๐ก Panduan Penggunaan & Arsitektur Kode
1. Pengecekan Hak Akses RBAC pada Model User
Gunakan helper hasPermission() untuk mengevaluasi hak akses pengguna terhadap modul:
// Mengecek apakah user memiliki izin membaca modul user if (auth()->user()->hasPermission('user', 'read')) { // Tampilkan data user } // Mengecek izin menghapus modul role if (auth()->user()->hasPermission('role', 'delete')) { // Proses hapus role }
2. Otomatisasi Audit Logging (Auditable Trait)
Cukup tambahkan trait Auditable pada model Eloquent Anda untuk merekam setiap perubahan data secara otomatis:
namespace App\Models; use App\Traits\Auditable; use Illuminate\Database\Eloquent\Model; class Product extends Model { use Auditable; protected $fillable = ['name', 'price', 'stock']; }
3. Pengelolaan Berkas Media Polimorfik (HasMedia Trait)
Tambahkan trait HasMedia untuk menghubungkan model mana pun dengan tabel media:
namespace App\Models; use App\Traits\HasMedia; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasMedia; } // Melampirkan berkas media ke user $user->attachMedia($fileUpload, 'avatar', 'public', true); // Mengambil URL berkas media $avatarUrl = $user->getMediaUrl('avatar');
๐งช Automated Testing & Stress Benchmark
Package ini dilengkapi dengan suite pengujian unit, fitur, dan stress benchmark test yang 100% lolos (PASSED):
php artisan test
Hasil Benchmark:
- RBAC Throughput Benchmark: 2.000 evaluasi hak akses berurutan selesai dalam
< 0.4msper check. - Audit Log Writing Benchmark: 100 transaksi penulisan massal selesai tanpa kegagalan integritas.
- Media Aggregate Benchmark: 1 Query SQL aggregat kondisional pada 500 berkas media selesai dalam
< 15ms.
PASS Tests\Unit\UserRbacTest
PASS Tests\Feature\AuthAndProfileTest
PASS Tests\Feature\MediaCenterTest
PASS Tests\Feature\AuditLogAndMetricsTest
PASS Tests\Feature\SystemStressTest
Tests: 15 passed (39 assertions)
Duration: 2.58s
๐ณ Deployment (Docker & Kubernetes Cloud-Native)
Zivar Starter Kit telah dilengkapi berkas konfigurasi container & manifest Kubernetes production-ready:
1. Pengujian Container Lokal (Docker Compose)
docker-compose up -d
Aplikasi akan aktif di http://localhost:8080 (App + MySQL 8.0 + Redis 7.2).
2. Deploy ke Kubernetes Cluster (K8s)
kubectl apply -f .k8s/configmap.yaml kubectl apply -f .k8s/secret.yaml kubectl apply -f .k8s/job-migrate.yaml kubectl apply -f .k8s/deployment.yaml kubectl apply -f .k8s/service.yaml kubectl apply -f .k8s/ingress.yaml kubectl apply -f .k8s/hpa.yaml
โ๏ธ Konfigurasi Package (config/zivar.php)
Anda dapat menyesuaikan durasi cache dan whitelist model upload melalui file config/zivar.php:
return [ 'name' => 'Zivar System Starter Kit', 'permissions_cache_ttl' => 3600, // Durasi Cache RBAC Permission (1 Jam) 'telemetry_cache_ttl' => 30, // Durasi Cache Telemetri Metrics (30 Detik) 'allowed_upload_models' => [ App\Models\User::class, App\Models\Media::class, ], ];
๐ฌ Kontak & Sosial Media (Author)
Jika Anda memiliki pertanyaan, saran pengembangan, atau ingin berkolaborasi, silakan hubungi pengembang melalui:
๐ Lisensi (License)
Diterbitkan di bawah Lisensi MIT. Bebas digunakan dan dikembangkan untuk proyek komersial maupun non-komersial.