aldhi88 / starterkit-larawire-agentic
An Agentic AI-ready Laravel and Livewire starter kit for secure, modular internal company applications.
Package info
github.com/aldhi88/starterkit-larawire-agentic
pkg:composer/aldhi88/starterkit-larawire-agentic
Requires
- php: >=8.3
- ext-intl: *
- ext-zip: *
- dedoc/scramble: ^0.13.36
- laravel-lang/common: ^6.8
- laravel/framework: >=13.8 <14.0
- livewire/livewire: ^4.3
- power-components/livewire-powergrid: ^6.10
Requires (Dev)
- larastan/larastan: ^3.9
- laravel/pint: ^1.27
- mockery/mockery: ^1.6
- orchestra/testbench: ^11.0
- pestphp/pest: ^4.7
- pestphp/pest-plugin-laravel: ^4.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Bahasa Indonesia · English
Website resmi · Dokumentasi · Packagist
Starterkit Larawire dibangun menggunakan dan mengapresiasi karya Laravel, Livewire, Livewire PowerGrid, Tabler, Laravel Lang, Scramble, dan Pest.
Versi minimum Laravel: 13.8. Constraint Composer pada setiap release menentukan versi yang sudah diuji; dukungan major Laravel baru ditambahkan setelah lolos compatibility test.
A. Tentang
Apa itu Starterkit Larawire Agentic?
Bayangkan Starterkit Larawire seperti Laravel authentication starter kit dengan fondasi yang lebih lengkap. Package ini menyiapkan project aplikasi internal perusahaan baru dengan fitur yang biasanya dibuat berulang kali:
- login menggunakan username atau email;
- Superuser, user, role, dan authorization berdasarkan module;
- profil perusahaan dan pengaturan keamanan;
- log aktivitas;
- pemisahan App dan subdomain;
- sinkronisasi route, module, dan menu dari source code;
- tabel menggunakan Livewire PowerGrid;
- API gateway dan dokumentasi OpenAPI opsional;
- layout vertical dan horizontal; serta
- kontrak development AGENTS AI.
Satu instalasi digunakan untuk satu perusahaan/client, bukan SaaS multi-tenant.
Cara kerja App dan subdomain
Misalnya kamu membuat ERP internal dengan bagian Sales, HR, Gudang, dan Karyawan. Setiap bagian dapat dipisahkan menjadi App:
| App | Contoh alamat | Tanggung jawab |
|---|---|---|
| Sales | sales.company.test |
Prospek, penawaran, dan penjualan |
| HR | hr.company.test |
Rekrutmen dan proses HR |
| Gudang | gudang.company.test |
Stok dan pergerakan barang |
| Karyawan | karyawan.company.test |
Layanan mandiri karyawan |
Semua App tetap menggunakan satu project Laravel, database, profil perusahaan, dan sesi login. Subdomain hanya memisahkan area kerja, bukan membuat instalasi Laravel yang berbeda.
Di production, arahkan domain utama dan semua subdomain App ke directory
Laravel public/ yang sama. Wildcard DNS seperti *.company.com dapat dipakai
jika didukung hosting.
File yang biasa diedit developer
Setiap App memiliki konfigurasi dan source fiturnya sendiri:
config/apps/<app>.php Definisi App, module, dan menu
routes/apps/<app>.php Route web pada subdomain App
routes/apps/<app>.api.php Route API App opsional
app/Livewire/Apps/<App>/ Komponen Livewire
resources/views/apps/<app>/ View App
database/migrations/apps/<app>/ Migration App
tests/Feature/Apps/<App>/ Test App
Buat struktur awal menggunakan:
php artisan starter:app
File route menentukan halaman yang tersedia. config/apps/<app>.php
menghubungkan route dengan module dan menu. Menu hanya navigasi; module adalah
batas authorization yang sebenarnya.
Mengatur akses role secara dinamis
Administrator memberikan module kepada role melalui halaman Pengaturan. Satu role dapat membuka satu atau beberapa App, dan setiap App mempunyai halaman awal yang dipilih. Superuser selalu memiliki akses penuh dan dilindungi sebagai akun sistem tersembunyi.
Setelah route, module, atau menu berubah, sinkronkan metadata source code:
php artisan starter:sync
Theme dan layout
Starterkit menyediakan theme dengan layout vertical dan horizontal:
| Theme | Lisensi source | Catatan |
|---|---|---|
| Tabler | MIT | Bebas digunakan sesuai lisensi Tabler |
| DashCode | Komersial | Lisensi dikelola owner untuk project internal tim |
| Vuexy 3.0.0 | Komersial, lokal/privat | Penggunaan pribadi/internal berlisensi; package dan browser matrix terverifikasi |
Pilihan disimpan di environment:
STARTER_THEME=tabler STARTER_LAYOUT=vertical
Wizard starter:install meminta pilihan Tabler, DashCode, atau Vuexy beserta layout.
Vuexy memerlukan archive runtime berlisensi dari owner: verifikasi checksum
VUEXY_SHA256SUMS, lalu ekstrak vuexy.zip ke theme-intake/vuexy/ pada host
lokal sebelum instalasi. Archive ini berisi runtime/, diabaikan Git pada
repository template, dan tidak tersedia melalui downloader publik. Installer
memvalidasi seluruh file terhadap manifest sebelum mempublikasikannya.
Aset runtime minimum theme open-source diunduh otomatis dari arsip GitHub yang
dipin, diperiksa ukuran dan checksum-nya, lalu dipublikasikan ke
public/assets/<theme>/. Vuexy memakai runtime lokal berlisensi yang diverifikasi
terhadap manifest dan tidak memiliki downloader publik. Tidak ada copy template
demo manual; source vendor dan halaman demo DashCode/Vuexy tidak didistribusikan.
Runtime komersial ditujukan untuk project internal yang berada di bawah lisensi
vendor milik owner repository.
Semua theme mempertahankan layout halaman, hierarki konten, jenis dan jumlah
komponen, urutan, grouping, penempatan, serta density yang sama. Perbedaannya
hanya kosmetik dan wrapper yang diwajibkan vendor. Custom integration asset
setiap theme wajib bernama css/<theme-key>.css dan js/<theme-key>.js.
Archive dikelola terpisah di
starterkit-larawire-agentic-template.
Hasil runtime public/assets/<theme>/ wajib di-commit bersama project Laravel.
Production menggunakan hasil tersebut dan tidak mengunduh arsip theme.
Untuk menambah theme, taruh distribusi HTML/aset vendor di theme-intake/<theme-key>/, lalu instruksikan agent AI:
Integrasikan theme <theme-key> dari theme-intake/<theme-key> sampai siap dipilih installer.
Agent wajib menangani audit lisensi, indexing seluruh HTML, filtering aset, seluruh halaman/komponen starter, kedua layout, PowerGrid, dan pengujian. Source demo penuh serta aset vendor tetap hanya di intake lokal/arsip pemilik; indeks, recipe, implementasi, dan peta referensinya masuk ke core package.
Mode AGENTS AI
Installer menambahkan blok terkelola ke AGENTS.md project Laravel. Blok ini
mengarahkan agent AI ke aturan arsitektur, keamanan, testing, UI, theme, dan
development fitur di dalam Composer package. Fitur aplikasi tetap dibuat pada
project Laravel; vendor/aldhi88/starterkit-larawire-agentic bersifat read-only.
B. Instalasi
Instalasi local pertama kali
Persiapkan:
- project Laravel fresh;
- koneksi database yang benar di
.env; dan - domain lokal utama pada
APP_URL.
Dari root project Laravel:
composer require aldhi88/starterkit-larawire-agentic
Tidak perlu mengunduh atau menyalin template secara manual. Installer akan mengunduh aset Tabler dari GitHub setelah theme dipilih dan memvalidasinya sebelum source atau database project diubah.
Contoh .env:
APP_URL=http://company.test DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=company_erp DB_USERNAME=root DB_PASSWORD=
Jalankan installer:
php artisan starter:install
Wizard meminta theme (Tabler, DashCode, atau Vuexy lokal berlisensi), layout vertical/horizontal, lalu lima identitas berikut:
| Pertanyaan | Boleh memakai spasi? | Contoh input |
|---|---|---|
| Nama perusahaan/client | Ya | PT Maju Bersama |
| Nama App pertama | Ya | Human Resources |
| Domain/subdomain App | Tidak | hr |
| Email Superuser | Tidak | admin@company.test |
| Password Superuser | Tidak | dimasukkan melalui prompt tersembunyi |
Untuk domain App, masukkan hanya bagian subdomain tanpa titik dan tanpa domain
utama. Contoh hr akan menjadi hr.company.test jika APP_URL menggunakan
company.test.
Installer menjelaskan perubahan destruktif, mengonfirmasi APP_URL, menjalankan
wizard identitas, mengonfirmasi koneksi database, lalu memeriksa source Laravel.
Jika database yang dikonfirmasi belum ada, installer membuatnya otomatis selama
akun database memiliki izin CREATE DATABASE. SQLite juga dibuat otomatis jika
file database belum ada. Jika source tidak lagi fresh, instalasi berhenti sebelum
mengubah file atau data. Jika source fresh sudah menjalankan migration, installer
meminta satu konfirmasi tambahan.
Username Superuser selalu superuser. Password hanya dibaca melalui prompt
tersembunyi, langsung disimpan sebagai hash, dan tidak pernah ditulis ke .env,
argumen command, log, atau file sementara.
Password local boleh sederhana agar development praktis, tetapi tetap wajib
diisi dan dikonfirmasi. Saat starter:deploy perlu membuat Superuser pada
database production kosong, password wajib minimal 10 karakter serta mengandung
huruf besar, huruf kecil, dan angka.
Installer otomatis menjalankan validasi keamanan internal dan seluruh test aplikasi sebelum me-reset database target. Tidak ada command verifikasi tambahan yang perlu dijalankan manual. Jika verifikasi gagal, instalasi dihentikan, perubahan file dikembalikan, dan database target belum disentuh. Jika kegagalan terjadi setelah database di-reset, installer mengembalikan kondisi database kosong atau struktur migration fresh bawaan Laravel.
Instalasi menjalankan migrate:fresh; seluruh tabel dan data pada database yang
dipilih akan dihapus.
Reset dan instal ulang di local
Gunakan hanya jika seluruh aplikasi lama memang ingin dibuang dan dibuat ulang:
php artisan starter:reset
Command ini menampilkan peringatan keras, lalu menjalankan wizard instalasi yang
sama. Jika disetujui, seluruh database, source App pada boundary Apps, asset
App, upload logo/foto starterkit, role, user, pengaturan, menu, dan log aktivitas
lama akan dihapus. Jangan gunakan command ini untuk update rutin atau production.
Menggunakan database kosong baru setelah starterkit terpasang
Jangan jalankan installer fresh lagi. Ubah .env, kemudian bangun ulang data
starter menggunakan:
php artisan starter:sync
Jika database baru masih kosong, sync menjalankan migration lalu meminta email dan password Superuser baru melalui prompt tersembunyi.
Sinkronisasi local
Jalankan setelah mengubah konfigurasi App, route, module, menu, migration, atau pilihan theme/layout:
php artisan starter:sync
Sync juga memverifikasi recipe theme dan mempublikasikan asset package,
PowerGrid, dan Livewire. Tidak ada command publish asset terpisah. Commit hasil
public/assets/<theme>/. Jika cache aset local belum tersedia, sync dapat
mengunduh ulang arsip GitHub yang terverifikasi.
Update starterkit di local
composer update aldhi88/starterkit-larawire-agentic php artisan starter:sync
Periksa dan commit composer.json serta composer.lock pada repository
aplikasi Laravel.
Deployment production pertama kali
git clone <repository-laravel> <folder-project> cd <folder-project> cp .env.example .env # atur APP_URL, database, secret production, serta pertahankan STARTER_THEME dan STARTER_LAYOUT dari local composer install --no-dev --optimize-autoloader php artisan starter:deploy
Arahkan domain utama dan subdomain App ke <folder-project>/public.
STARTER_THEME dan STARTER_LAYOUT wajib sama dengan pilihan di local. Kedua
nilai ini tetap berada di .env local dan production agar tidak membutuhkan
file konfigurasi tambahan. Production tidak mengunduh arsip GitHub atau
menyiapkan theme-intake/: server memakai aset runtime theme terpilih yang
sudah dihasilkan oleh starter:sync dan di-commit dari local ke
public/assets/<theme>/.
Update production berkala
git pull --ff-only composer install --no-dev --optimize-autoloader php artisan starter:deploy
Production memakai versi package yang terkunci di composer.lock project
Laravel. starter:deploy khusus production dan melakukan preflight lengkap:
environment production, debug mati, HTTPS, cookie aman, domain, theme/layout
eksplisit, aset runtime theme dari repository, extension, directory runtime,
koneksi database, migration, registry App, dan cache.
Pada database production pertama yang masih kosong, command meminta kredensial
Superuser melalui prompt aman. Jika preflight gagal, deployment berhenti sebelum
mutation. starter:sync dan starter:reset ditolak di production.
Command Starterkit
Sebelum instalasi tersedia starter:install. Setelah instalasi berhasil:
| Command | Kegunaan |
|---|---|
starter:reset |
Menghapus instalasi lama dan mengulang wizard; hanya local |
starter:sync |
Menyelaraskan source developer ke database local |
starter:app |
Membuat App/subdomain baru melalui wizard |
starter:deploy |
Deploy production dengan preflight lengkap |
C. Gateway API Opsional
Gateway API nonaktif secara default. Aktifkan melalui .env:
STARTER_API_ENABLED=true
Kemudian jalankan:
php artisan starter:sync
Route API App berada di routes/apps/<app>.api.php dan tersedia pada
api.<APP_DOMAIN>/<app> tanpa tambahan prefix /api. Setiap endpoint tetap
wajib memiliki authentication, authorization, validation, dan rate limit yang
jelas. Dokumentasi API production hanya dapat diakses Superuser.
Dokumentasi
README ini adalah panduan ringkas GitHub. Panduan instalasi, arsitektur App,
authorization, workflow local, Agentic AI, deployment production, Gateway API,
dan troubleshooting tersedia di
website dokumentasi resmi.
Aturan teknis untuk agent dan contributor tetap tersedia di docs/ package.
Lisensi
Source tersedia untuk instalasi, modifikasi, dan deployment aplikasi internal sesuai LICENSE. Menjual, melisensikan ulang, atau mempublikasikan ulang package/starter yang bersaing tidak diizinkan. Komponen pihak ketiga tetap mengikuti lisensinya masing-masing; lihat THIRD_PARTY_NOTICES.md.