zivar / laravel-starter
Zivar System Laravel Starter Kit - RBAC, Audit Logging, Media Center & System Telemetry
Package info
github.com/ravizulfikar/zivar-laravel-basic
Language:Blade
pkg:composer/zivar/laravel-starter
Requires
- php: ^8.3
- laravel/framework: ^11.0|^12.0|^13.0
- laravel/tinker: ^2.9|^3.0
- livewire/livewire: ^3.5|^4.0
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
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Zivar Laravel Starter Kit is an enterprise-ready starter package for modern Laravel applications (Laravel 11, 12, & 13) powered by Livewire 3 SPA (wire:navigate), Tailwind CSS, and Zivar UI Kit.
Designed out of the box with multi-language localization (EN/ID), granular Role-Based Access Control (RBAC), immutable audit logging with visual diff viewer, polymorphic media management with chunked uploads, and real-time system telemetry.
โจ Fitur Utama (Core Features)
| Modul | Deskripsi & Fitur Unggulan |
|---|---|
| ๐ Multi-Language (EN / ID) | Dukungan multibahasa lengkap (English default & Bahasa Indonesia) dengan switcher instan di navbar dan halaman login via <x-layout.language-toggle />. |
| โก Livewire 3 SPA Navigation | Transisi halaman mulus tanpa full-page reload menggunakan wire:navigate terintegrasi pada autentikasi, sidebar, dan seluruh modul. |
| ๐ค User Management & Trash | CRUD pengguna lengkap, upload avatar dengan thumbnail preview, password generator otomatis, penetapan role multi-select, serta manajemen Soft Delete & Trash Bin (Restore / Permanent Delete). |
| ๐ก๏ธ Granular RBAC Matrix | Matriks izin modul granular (Create, Read, Update, Delete) per role. Dilengkapi proteksi role sistem bawaan (superadmin, admin, user) dan in-memory permission cache. |
| ๐ Immutable Audit Log Trail | Perekaman otomatis mutasi data (created, updated, deleted) via trait Auditable. Dilengkapi modal Visual Diff Viewer 3-kolom (Before vs After) dan penampil Raw JSON Snapshot. |
| ๐ Polymorphic Media Center | Manajemen berkas multimedia polimorfik via trait HasMedia, integrasi Fancyapps Fancybox v5 Lightbox, streaming berkas privat terproteksi, filter relasi (Active/Standalone/Orphaned), serta Chunked Upload untuk berkas besar (25MB+). |
| ๐ System Telemetry & Metrics | Dashboard telemetri kesehatan server real-time (/admin/metrics): penggunaan RAM & Peak RAM, latensi PDO database, kapasitas disk OS, rincian record per tabel master, dan konfigurasi runtime PHP. |
| ๐ Dark & Light Mode Theme | Theme toggle instan (Light, Dark, System preference) bebas kedipan (FOUC-free) tersimpan di localStorage. |
๐ Persyaratan Sistem (Requirements)
- PHP:
>= 8.3 - Laravel Framework:
^11.0|^12.0|^13.0 - Livewire:
^3.5|^4.0 - Database: MySQL 8.0+ / PostgreSQL 14+ / SQLite 3
- PHP Extensions:
pdo,mbstring,openssl,fileinfo,curl
โก Panduan Instalasi (Installation)
1. Pasang Package via Composer
Jalankan perintah berikut pada root project Laravel Anda:
composer require zivar/laravel-starter
2. Jalankan Installer Otomatis Zivar
Eksekusi artisan command bawaan Zivar untuk mempublikasikan konfigurasi, asset UI, migrasi database, dan seeder master data:
php artisan zivar:install
Perintah
php artisan zivar:installotomatis menjalankan:
php artisan vendor:publish --tag=zivar-config --force(Konfigurasiconfig/zivar.php)php artisan vendor:publish --tag=zivar-assets --force(Aset UI kepublic/assets)php artisan vendor:publish --tag=zivar-views --force(Blade views keresources/views)php artisan vendor:publish --tag=zivar-user-model --force(Model User dengan integrasi RBAC & HasMedia)php artisan storage:link(Symlink storage publik)php artisan migrate(Menjalankan seluruh tabel database)php artisan db:seed --class=Database\Seeders\ZivarDatabaseSeeder(Inisialisasi akun & peranan default)
๐ Akun & Kredensial Default (Default Logins)
Setelah instalasi selesai, buka browser ke /login:
| Peranan (Role) | Username / Email | Password | Hak Akses |
|---|---|---|---|
| Superadmin | superadmin / superadmin@zivar.id |
password |
Akses penuh seluruh modul sistem (Bypass RBAC) |
| Administrator | admin / admin@zivar.id |
password |
Akses manajemen Pengguna & Peranan (CRU) |
| User Operator | user / user@zivar.id |
password |
Akses baca modul Pengguna (Read-only) |
๐งญ Daftar Rute Bawaan (Built-in Routes)
| URL | Nama Rute | Deskripsi |
|---|---|---|
/login |
login |
Halaman autentikasi login (dengan SPA wire:navigate) |
/language/{locale} |
language.switch |
Switcher bahasa instan (en, id) |
/admin |
dashboard |
Dashboard utama panel admin workspace |
/admin/profile |
profile |
Profil akun pengguna & ubah password |
/admin/users |
users.index |
Manajemen pengguna, foto avatar, role assign & trash |
/admin/roles |
roles.index |
Matriks peranan RBAC & izin CRUD modul |
/admin/audit-logs |
audit-logs.index |
Jejak audit log & visual diff viewer |
/admin/media |
media.index |
Media center, chunk upload & lightbox gallery |
/admin/metrics |
metrics.index |
Telemetri kesehatan server & utilisasi memori |
/media/stream/{id} |
media.stream |
Streaming media terproteksi (privat/publik) |
๐ก Panduan Penggunaan & Integrasi Kode
1. Pengecekan Hak Akses RBAC pada Controller / Livewire
Gunakan helper method hasPermission() pada model User:
// Mengecek apakah user memiliki izin create pada modul user if (auth()->user()->hasPermission('user', 'create')) { // Jalankan aksi pembuatan user } // Mengecek izin delete pada modul role if (auth()->user()->hasPermission('role', 'delete')) { // Jalankan aksi hapus role }
2. Perekaman Audit Logging Otomatis (Auditable Trait)
Pasang trait Auditable pada Model Eloquent untuk mencatat seluruh perubahan data secara otomatis:
namespace App\Models; use App\Traits\Auditable; use Illuminate\Database\Eloquent\Model; class Article extends Model { use Auditable; protected $fillable = ['title', 'slug', 'content', 'status']; }
3. Pengelolaan Berkas Media Polimorfik (HasMedia Trait)
Pasang trait HasMedia pada Model untuk mengaktifkan lampiran berkas multimedia:
namespace App\Models; use App\Traits\HasMedia; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasMedia; } // Melampirkan file yang diunggah ke user (collection: 'avatar', disk: 'public') $user->attachMedia($uploadedFile, 'avatar', 'public', true); // Mengambil URL berkas media aktif $avatarUrl = $user->getMediaUrl('avatar');
๐งช Testing Suite
Jalankan pengujian unit dan integrasi otomatis dengan PHPUnit:
php artisan test
Semua 28 skenario pengujian (RBAC, Audit Log, Media Center, Soft Delete, System Telemetry, dan Language Switcher) terverifikasi 100% lulus.
โ๏ธ Konfigurasi Kustom (config/zivar.php)
return [ 'name' => 'Zivar System Starter Kit', /* Durasi cache hak akses RBAC (Detik) */ 'permissions_cache_ttl' => 3600, /* Durasi cache telemetri sistem (Detik) */ 'telemetry_cache_ttl' => 30, /* Model yang diizinkan untuk upload berkas */ 'allowed_upload_models' => [ App\Models\User::class, App\Models\Media::class, ], ];
๐ฌ Kontak & Pengembang (Author)
- Author: Ravi Zulfikar
- GitHub: github.com/ravizulfikar/zivar-laravel-basic
- Packagist: packagist.org/packages/zivar/laravel-starter
- LinkedIn: linkedin.com/in/ravizulfikar
- WhatsApp: +62 838-9899-9501
๐ Lisensi (License)
Diterbitkan di bawah lisensi MIT License. Bebas digunakan untuk proyek komersial maupun personal.