misaf / vendra-console
The console (platform admin) panel for the Vendra platform
Requires
- php: ^8.3
- awcodes/filament-badgeable-column: ^4.0
- filament/filament: ^5.6.8
- illuminate/console: ^13.0
- illuminate/contracts: ^13.0
- illuminate/database: ^13.0
- illuminate/http: ^13.0
- illuminate/support: ^13.0
- misaf/laravel-email-validation: ^1.0
- misaf/vendra-localization: 1.x-dev
- misaf/vendra-property: 1.x-dev
- misaf/vendra-reseller: 1.x-dev
- misaf/vendra-subscription: 1.x-dev
- misaf/vendra-support: 1.x-dev
- misaf/vendra-tenant: 1.x-dev
- spatie/laravel-package-tools: ^1.93.1
Requires (Dev)
- fakerphp/faker: ^1.24.1
- larastan/larastan: ^3.10.0
- laravel/boost: ^2.4.12
- laravel/pint: ^1.29.3
- misaf/vendra-testing: 1.x-dev
- misaf/vendra-user: 1.x-dev
- mockery/mockery: ^1.6.12
- nunomaduro/collision: ^8.9.4
- orchestra/testbench: ^11.1
- pestphp/pest: ^5.0
- pestphp/pest-plugin-arch: ^5.0
- pestphp/pest-plugin-laravel: ^5.0
- pestphp/pest-plugin-livewire: ^5.0
- pestphp/pest-plugin-profanity: ^5.0
- pestphp/pest-plugin-type-coverage: ^5.0
- phpstan/extension-installer: ^1.4.3
This package is auto-updated.
Last update: 2026-08-17 00:19:31 UTC
README
The console (platform admin) panel for Laravel. It is the operator's cross-tenant view of the platform: resellers, plans, and every property with its domains and storefront state.
The panel is presentation. Every state change it performs belongs to a domain package's action, so this package stays thin on purpose.
Requirements
- PHP 8.3+
- Laravel 13
- Filament 5
misaf/vendra-reseller,misaf/vendra-property,misaf/vendra-subscription,misaf/vendra-tenant,misaf/vendra-localizationandmisaf/vendra-support
Installation
composer require misaf/vendra-console php artisan migrate
The console_users table and the console guard, console_users provider, and
console_password_reset_tokens broker are configured by the host application's
config/auth.php and migrations.
The panel
Providers\ConsolePanelServiceProvider registers everything:
- served on
console.<app host>, derived fromapp.url— no hard-coded host consoleauth guard againstModels\ConsoleUser, with theconsole_userspassword broker, password reset, and required email verification- top navigation, global search key bindings, database notifications and transactions
It runs outside the tenant middleware stack so an operator can work across every tenant. There is no current tenant: never scope a console query with tenant-aware helpers, and join explicitly where a listing must be per-tenant.
Resources
| Resource | Delegates to |
|---|---|
PropertyResource |
Misaf\VendraProperty's CreatePropertyPage (which runs ProvisionPropertyAction), StorefrontConfigurationFields and ReplaceDomainAction |
ResellerResource |
Misaf\VendraReseller's CreateResellerAction, CreateResellerOwnerAction and OffboardResellerAction, plus misaf/vendra-subscription's SubscribeAction |
PlanResource |
misaf/vendra-subscription's plan model |
DomainsRelationManager manages a property's domains, and ConsoleOverview
gives the operator the platform-wide counts.
The only intended difference from the reseller panel is which reseller is resolved as a property's billing owner — the console picks one from the form, the reseller panel uses the authenticated owner. Keep any other divergence out, and put a behaviour both panels need in the domain package instead.
Layering
This is the topmost layer:
vendra-console → vendra-reseller → vendra-property → vendra-container
Nothing depends on this package, so anything reusable belongs one layer down.
Testing
Act as a ConsoleUser on the console guard. A test that sets up a current
tenant is testing the wrong panel. Assert that the domain action ran rather than
re-asserting the domain package's own behaviour.
php artisan test --compact --testsuite=vendra-console
License
MIT. See LICENSE.