Search by

zivar / laravel-starter

ravizulfikar

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

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.3 2026-08-19 21:41 UTC

This package is auto-updated.

Last update: 2026-08-22 15:07:45 UTC


README

Latest Version on Packagist Total Downloads Laravel Version Livewire Version PHP Version License

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:install otomatis menjalankan:

  1. php artisan vendor:publish --tag=zivar-config --force (Konfigurasi config/zivar.php)
  2. php artisan vendor:publish --tag=zivar-assets --force (Aset UI ke public/assets)
  3. php artisan vendor:publish --tag=zivar-views --force (Blade views ke resources/views)
  4. php artisan vendor:publish --tag=zivar-user-model --force (Model User dengan integrasi RBAC & HasMedia)
  5. php artisan storage:link (Symlink storage publik)
  6. php artisan migrate (Menjalankan seluruh tabel database)
  7. 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)

๐Ÿ“œ Lisensi (License)

Diterbitkan di bawah lisensi MIT License. Bebas digunakan untuk proyek komersial maupun personal.