adhocrat-io/arkhe-main
Bootstrap a Laravel admin backend with Livewire 4 + Flux UI: users, roles & permissions (Spatie), user profiles, SEO + sitemap, and cookie-consent. Interactive installer publishes config/migrations, seeds default roles, and patches sidebar/Tailwind scanning.
Installation
composer require adhocrat-io/arkhe-main
php artisan arkhe:install
/admin), user model, and Flux UI integration.Publish Assets
php artisan arkhe:assets
Run Migrations
php artisan migrate
users, roles, and permissions tables (via Spatie Laravel-Permission).Seed Default Admin
php artisan arkhe:seed
First Use Case
/admin to access the Flux UI-powered admin panel./resources/views/vendor/arkhe/ – Customize Flux UI templates here./vendor/adhocrat-io/arkhe-main/src/Livewire/ – Extend or override default components./config/arkhe.php – Adjust routes, user model, and Flux UI settings./routes/arkhe.php – Modify SEO rules or sitemap generation.User & Role Management
arkhe:users and arkhe:roles Livewire components for CRUD operations.use Adhocrat\Arkhe\Models\User;
$user = User::find(1);
$user->assignRole('editor');
Permission-Based Access Control
can() helper:
if (auth()->user()->can('manage-users')) {
return view('admin.users');
}
Flux UI Integration
php artisan vendor:publish --tag=arkhe-sidebar
ARKHE_ADMIN_LAYOUT=arkhe::layouts.app
SEO & Sitemap
use Adhocrat\Arkhe\Facades\ArkheSitemap;
ArkheSitemap::add('/admin/users');
arkhe:seo facade or Flux UI’s built-in SEO tools.Cookie Consent
/config/arkhe.php:
'cookie_consent' => [
'enabled' => true,
'cookie_name' => 'arkhe_consent',
],
Custom User Model
Extend the default Adhocrat\Arkhe\Models\User or bind your model in config/arkhe.php:
'user_model' => App\Models\CustomUser::class,
Livewire Component Overrides Publish and modify components:
php artisan vendor:publish --tag=arkhe-livewire
Example: Override the UsersTable component in /resources/livewire/arkhe/users-table.blade.php.
Middleware for Admin Routes Use the provided middleware:
Route::middleware(['auth', 'arkhe.admin'])->group(function () {
// Admin routes
});
API Endpoints Leverage Spatie’s permission checks in API controllers:
public function destroy(User $user)
{
$this->authorize('delete', $user);
$user->delete();
}
Flux UI Starter Dependency
ARKHE_ADMIN_LAYOUT to avoid missing assets.Permission Caching
php artisan cache:clear
php artisan arkhe:permissions:cache
Route Conflicts
/admin routes by default. Customize in config/arkhe.php:
'routes' => [
'prefix' => 'backend',
],
Livewire Component Naming
UsersTable). Use unique namespaces:
namespace App\Livewire\Admin\Users;
SEO/Sitemap Duplicates
shouldBeIndexed() method:
public function shouldBeIndexed(): bool
{
return false; // Exclude admin routes
}
Livewire Errors
livewire.log in /storage/logs/ for component-specific issues.php artisan livewire:discover to refresh component autoloading.Permission Denied
roles, permissions, model_has_roles tables).php artisan arkhe:permissions:list to debug assignments.Asset Loading Issues
ARKHE_ASSETS_PUBLISHED is true in .env after running arkhe:assets.php artisan view:clear
php artisan cache:clear
Flux UI Tailwind Conflicts
@source directives in /resources/css/app.css. Arkhe patches Tailwind v4 by default.Custom Livewire Components
// app/Livewire/Arkhe/ExtendedUsersTable.php
namespace App\Livewire\Arkhe;
use Adhocrat\Arkhe\Livewire\UsersTable;
class ExtendedUsersTable extends UsersTable
{
public function render()
{
return view('livewire.arkhe.extended-users-table')->layout('arkhe::layouts.app');
}
}
Event Listeners
UserCreated, RoleDeleted) in EventServiceProvider:
protected $listen = [
\Adhocrat\Arkhe\Events\UserCreated::class => [
\App\Listeners\LogUserCreation::class,
],
];
API Resource Extensions
UserResource) by publishing and modifying:
php artisan vendor:publish --tag=arkhe-api
Custom Views
php artisan vendor:publish --tag=arkhe-views
/resources/views/vendor/arkhe/users/create.blade.php.Database Schema
users table by creating a migration and updating the model:
// app/Models/User.php
use Adhocrat\Arkhe\Models\User as ArkheUser;
class User extends ArkheUser
{
protected $table = 'users';
// Add custom fields
}
How can I help you explore Laravel packages today?