Control Panel Laravel
#Liberu Control Panel
Production-ready Laravel control panel for hosting, infrastructure, and operations.
Software · Hosting · Services · Liberu Group
Liberu Control Panel is the deployable application for managing hosting and infrastructure operations. It combines independently released capability, API, Filament, Livewire, and theme packages while keeping application bootstrapping, environment configuration, panel composition, and cross-package tests in one place.
#Key features
- Jetstream authentication, profiles, sessions, two-factor authentication, passkeys, and social login
- Filament admin and account panels assembled from optional presentation modules
- Organisations, teams, roles, permissions, audit trails, settings, and feature flags
- Messaging, notifications, localisation, search, files, webhooks, integrations, analytics, and import/export foundations
- Queue, scheduler, Horizon, Pulse, Telescope, Octane, Reverb, backup, and observability support
- Independently versioned modules installed into tracked
/modulesdirectories - Independently versioned themes installed into tracked
/themesdirectories with inheritance and safe fallback - Architecture tests for manifests, dependency direction, package ownership, and presentation boundaries
- Control Core for nodes, capabilities, credentials, inventory, desired state, and safe operation coordination
- Hosting operations for web services, DNS, mail, databases, files, backups, security, monitoring, containers, and Kubernetes
#Requirements
| Dependency | Supported version |
|---|---|
| PHP | 8.5 |
| Laravel | 13.x |
| Filament | 5.x |
| Livewire | 4.x |
| Composer | 2.x |
| Node.js | Latest stable release |
| Database | A Laravel-supported SQL database |
#Quick start
git clone https://github.com/liberusoftware/control-panel-laravel.git
cd control-panel-laravel
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run build
php artisan migrate
php artisan serve
Review .env before migrating. Use php artisan migrate --seed only when example data is wanted. The optional interactive install.sh supports local, Docker, and Kubernetes-oriented setup.
For Docker Compose, the application is served by Laravel Octane on container port 8000 and is published at http://localhost:${APP_PORT:-8000}. Set APP_PORT to change the host port; the container port must remain 8000.
#Composable package architecture
Each runtime capability is an independent liberu-module Composer package with its own GitHub repository, release lifecycle, manifest, provider, documentation, and tests. Each visual package is an independent liberu-theme. Shared contract packages and the custom installer are normal Composer dependencies under /vendor.
Application composition ├── modules/ # Composer-installed module releases, tracked in Git ├── themes/ # Composer-installed theme releases, tracked in Git ├── app/ # Host-only composition and integration ├── config/ # Enabled modules and application policy └── tests/ # Cross-package and application tests
Composer is the source of installation and version truth:
# Update all dependencies, including modules and themes composer update --with-all-dependencies # Update one capability from its tagged GitHub repository composer update liberusoftware/search --with-dependencies
The trusted liberusoftware/composer-installer places packages according to type:
| Composer type | Install path | Repository convention |
|---|---|---|
liberu-module |
/modules/{installer-name} |
liberusoftware/module-{installer-name} |
liberu-theme |
/themes/{installer-name} |
liberusoftware/theme-{installer-name} |
| Contract/library | /vendor |
Package-specific repository |
modules/ and themes/ are intentionally kept out of .gitignore. Their reproduced contents are committed so deployments and reviews can see the exact installed code, while composer.lock pins each release and source commit. Do not edit an installed module only in this host: contribute the generic change to its package repository, release it, and update the Composer dependency here.
Installation, runtime enablement, authorisation, and commercial entitlement are separate concerns. config/modules.php selects the enabled capability graph; the module manager validates dependencies and orders providers without scanning application classes manually.
Every module also publishes a validated feature catalog in module.json. Hosts can inspect the complete catalog or search it without loading module internals:
php artisan module:features php artisan module:features health php artisan module:status search
#Module and theme development
A module owns one cohesive capability and communicates through public contracts, actions, events, registries, or stable identifiers. Domain modules do not depend on Filament or themes; optional *-filament, *-api, and *-livewire packages provide presentation adapters.
Every module contains:
composer.json module.json README.md LICENSE.md CHANGELOG.md src/ database/ or resources/ when required tests/
Themes contain composer.json, theme.json, source assets, compatibility metadata, accessibility/fallback expectations, tests, documentation, and asset licensing information. See the module development guide and theme architecture.
#Testing and quality
composer validate --strict vendor/bin/pest vendor/bin/pint --test npm run build
The test suite exercises application behaviour and every installed module provider. Package architecture tests verify metadata, declared dependencies, host isolation, UI boundaries, and Composer ownership.
#Publishing the component repositories
Liberu Control Panel is the host application; its reusable capabilities are
published as independent Composer packages. GitHub repositories for modules
use the module- prefix (for example,
liberusoftware/module-control-panel-accounts). Packagist uses each module's
declared Composer package name and does not derive a second name from the
GitHub prefix. Themes use the corresponding theme- repository prefix.
The package repositories are maintained as independent Git histories. Use the fleet tool to inspect, clone, validate, and update those existing repositories:
# Inspect repository checkouts and their local/remote state scripts/fleet status # Clone any package repositories that are not in the workspace yet scripts/fleet clone # Run a validation command across the checked-out package repositories scripts/fleet run 'vendor/bin/pest' # Commit and push an intentional package-repository change scripts/fleet commit -m 'Describe the package change'
fleet commit and fleet tag require clean, pushed main branches and never
force-update a package repository. Creating a new public repository remains an
explicit GitHub administration step; package-to-repository mappings are
validated by .liberu-meta.json and the Packagist dry run below.
After the repositories are public, register every Composer package on Packagist:
# Verify all package-to-repository mappings without submitting php scripts/submit-packagist.php --dry-run # Obtain the MAIN API token from packagist.org/profile, then bulk register the packages export PACKAGIST_USERNAME='your-packagist-username' export PACKAGIST_API_TOKEN='your-packagist-api-token' php scripts/submit-packagist.php unset PACKAGIST_API_TOKEN
The submitter skips packages that are already registered and reports individual API failures without printing the configured token.
#Documentation
- Module development
- Foundation compliance
- Foundation module matrix
- Theme architecture
- Theme system
- Messaging architecture
- Search architecture
- Localisation
- Notifications
#Related Liberu projects
| Project | Repository | Scope |
|---|---|---|
| Accounting | liberusoftware/accounting-erp-laravel | Ledgers, banking, tax, expenses, close, and reporting |
| Automation | liberusoftware/automation-laravel | Governed workflows, provider-neutral AI, approvals, and connectors |
| Billing | liberusoftware/billing-laravel | Billing, subscriptions, payments, invoices, and revenue operations |
| Browser game | liberusoftware/browser-game-laravel | Browser-based game platform and domain capabilities |
| CMS | liberusoftware/cms-laravel | Content, publishing, pages, media, search, and delivery |
| Control panel | liberusoftware/control-panel-laravel | Hosting, infrastructure, DNS, mail, backups, and operations |
| CRM | liberusoftware/crm-laravel | Customers, leads, opportunities, sales, and service |
| Ecommerce | liberusoftware/ecommerce-laravel | Catalogues, checkout, orders, fulfilment, and returns |
| Genealogy | liberusoftware/genealogy-laravel | Genealogy records, relationships, sources, and research |
| Maintenance | liberusoftware/maintenance-laravel | Maintenance planning, assets, work orders, and operations |
| Real estate | liberusoftware/real-estate-laravel | Property, listing, tenancy, and transaction workflows |
| Social network | liberusoftware/social-network-laravel | Social profiles, groups, content, messaging, and discovery |
#Security
Do not report security vulnerabilities through public GitHub issues. Email security@liberusoftware.com with reproduction details and the affected version so the report can be handled privately.
#License
This project is open-source software available under the MIT License. The linked licence text is authoritative; this summary is not legal advice.
#Feedback and contributing
Feedback and contributions are welcome. Report reproducible bugs, propose focused enhancements, improve documentation or translations, and submit tested changes. Search existing issues first. Pull requests should explain the problem and approach, remain focused, pass the required checks, and document user-visible or breaking changes. Security reports must follow the private route above.
#Contributors
Thank you to everyone who helps improve Liberu. View the contributors graph.