Skip to content

Admin

Capell Admin screenshot

Capell Admin is the Filament surface for editing and operating Capell sites. It owns the dashboard, pages, sites, languages, layouts, themes, media, users, roles, settings, extension pages, and package-owned admin screens.

Who’s this for? Editors using the Filament admin, and the developers who configure it. Managing content, media, users, and settings.

Status: Available · Package: capell-app/admin

NeedUse
Add the panel to an appphp artisan filament:install --panels, then php artisan capell:admin-setup or php artisan capell:install.
Change /adminLaravel route/domain config around the Filament panel; keep installer and lockdown access in mind.
Add a package settings screenSettingsSchemaRegistry::register() and registerSettingsClass().
Add admin resources, pages, widgets, or configuratorsAdminBridge plus AdminBridgeRegistrar, or CapellAdmin::contributeToAdminSurface(...) for small direct contributions.
Add page/site/user form fieldsTagged schema extenders such as PageSchemaExtender::TAG, SiteSchemaExtender::TAG, or UserSchemaExtender::TAG.
Add header toolsTag an AdminToolItem with AdminToolItem::TAG.
Add user menu actionsCapellAdmin::registerUserMenuItem(...).
Add content widgetsCapellAdmin::registerWidget(...) or CapellAdmin::registerDiscoverableWidgets(...).
Add lifecycle callbacksCapellCore::subscriberManager()->subscribe(...) or AdminEventRegistry.
ScreenPurpose
DashboardHealth, publishing work, and recent content; role-aware widgets.
PagesThe page tree and edit flow; URLs, layouts, publishing dates, preview, duplicate, export.
Sites and languagesDomains and language records; default site/language state and locale-aware editing.
Layouts and themesRecords that connect page content to frontend presentation.
MediaUploads and metadata; focal points, localized alt text, and crop/preview.
SettingsCore, Admin, Frontend, package, dashboard, and theme settings.
ExtensionsInstalled package state and settings pages; Marketplace alert when Marketplace is installed.
Site HealthRead-only checks for public traffic readiness.
RecoveryImport/export shell; execution belongs to capell-app/migration-assistant when installed.
LockdownEmergency frontend lock-down and break-glass admin access.
NeedRead
Manage users, roles, and accessUsers and roles
Keep admin accounts secureAccount security
Install or repair the admin panelAdmin setup
Understand the admin domain modelAdmin domain
Register package admin surfacesAdmin bridges
Debug missing admin extension surfacesDebugging admin extensions
Customize your dashboardCustomize your dashboard
Register a dashboard Filament widgetRegister a dashboard Filament widget
Work with media recordsMedia management
Manage installed themesTheme Library
Generate theme images from the adminGenerated theme images
Recover from broken admin stateRecovery
  • Keep business rules in Actions. Filament resources, pages, tables, widgets, and Livewire components should delegate.
  • Put visible strings in translations, including labels introduced by package extenders.
  • Prefer an AdminBridge when a package contributes several surfaces. It keeps package boot code small and central.
  • Use AdminSurfaceContributionData for pages, resources, widgets, configurators, schema extenders, and panel extenders.
  • Use backed enums implementing HasLabel for option sets; do not bury option arrays in resources.
  • Admin-only data must not leak into public frontend output. In-page authoring is a post-load authenticated admin feature, not public HTML.
use Capell\Admin\Contracts\Bridges\AdminBridge;
use Capell\Admin\Data\Bridges\AdminBridgeContextData;
use Capell\Admin\Support\Bridges\AdminBridgeRegistrar;
final class BlogAdminBridge implements AdminBridge
{
public function register(AdminBridgeRegistrar $registrar, AdminBridgeContextData $context): void
{
$registrar->resource(BlogPostResource::class, group: 'content', name: 'blog-posts');
$registrar->widget(RecentPostsWidget::class);
$registrar->settingsClass('blog', BlogSettings::class);
$registrar->settingsSchema('blog', BlogSettingsSchema::class);
}
}

Register the bridge from the package service provider:

CapellAdmin::registerAdminBridge('capell-app/blog', BlogAdminBridge::class);
FeaturePackage
Article resourcescapell-app/blog
Visual content sectionscapell-app/content-sections
Navigation managercapell-app/navigation
Publishing approvals and scheduled workflowcapell-app/publishing-studio
Recovery executioncapell-app/migration-assistant
AI media toolscapell-app/media-ai

Optional package feature docs live with the package that owns the feature. See Approved packages for the wider package list.