php artisan monorail:make-panel AdminThis generates app/Providers/Monorail/AdminPanelProvider.php:
use Monorail\Panel\Panel;
use Monorail\Panel\PanelProvider;
final class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->path('admin')
->brand('My App')
->discoverResources(
in: app_path('Monorail/Resources'),
for: 'App\\Monorail\\Resources',
);
}
}
discoverResources()is optional. You can instead list resources explicitly with->resources([UserResource::class]), or skip both and add them later. See Panel Configuration.
Register it in bootstrap/providers.php:
return [
// ...
App\Providers\Monorail\AdminPanelProvider::class,
];php artisan monorail:make-resource Useruse App\Models\User;
use Monorail\Forms\Components\TextInput;
use Monorail\Forms\Form;
use Monorail\Resources\Resource;
use Monorail\Tables\Columns\TextColumn;
use Monorail\Tables\Table;
final class UserResource extends Resource
{
protected static string $model = User::class;
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('id')->sortable(),
TextColumn::make('name')->sortable(),
TextColumn::make('email')->sortable()->copyable(),
])
->searchable(['name', 'email'])
->defaultSort('id', 'desc');
}
public static function form(Form $form): Form
{
return $form->schema([
TextInput::make('name')->required(),
TextInput::make('email')->email()->required()->unique(),
]);
}
}Visit /admin/users — you get a sortable, searchable, paginated table with
create/edit pages.
- Panel Configuration — brand, theme, middleware
- Tables — columns, filters, actions
- Forms — all field types and layout
- Authorization — wire up policies