Skip to content
Framework d'administration pour Laravel

Définissez un Resource.
Obtenez un panneau complet.

Champs, colonnes, filtres, actions, relation managers et widgets de tableau de bord, générés depuis une seule classe PHP. Frontend Vue SPA.

GET /arrel/api/admin/posts/schema
tenant.arrel.app/posts
Articles3
#014Introduction à ArrelPublié
#012Nouveautés de la v2Brouillon
#013Guide d'installationPublié

Comment ça marche

Trois étapes, toutes dans votre projet Laravel.

  1. 1

    Vous définissez un Resource

    Une classe PHP avec les champs, colonnes, filtres et actions de votre modèle.

  2. 2

    Arrel le sert

    Un endpoint /schema et une API JSON, protégés par Sanctum et les Policies du modèle.

  3. 3

    La SPA l’affiche

    Un frontend Vue précompilé affiche le formulaire, le tableau et les filtres à partir du schéma.

Tout ce qu'il faut à un panneau d'administration

Chaque brique se définit en PHP, dans le Resource lui-même, et est servie via un unique endpoint /schema.

Champs

Text, Select, Date, Toggle, File, Image, Repeater et RichEditor, chacun avec ses propres règles de validation.

Tables et colonnes

Colonnes calculées, badges et images avec des closures value()/color(), pas seulement un pass-through d’attributs.

Actions

View, Edit, Delete, Restore, ForceDelete et des actions sur mesure avec leur propre schema et handler, avec support bulk.

Filtres

Filtres de table réutilisables, appliqués directement sur la query du Resource.

Relation managers

Attach/Detach et des actions propres à la relation, gérées depuis le panneau du Resource parent.

Widgets

Cartes de statistiques avec valeur, couleur, icône et description, calculées à chaque requête du dashboard.

Pages personnalisées

Un composant Vue à vous, partageant l'instance d'Arrel ou totalement isolé avec registerMountablePage.

Multi-tenancy

Un TenantResolver sur mesure et un middleware configurable ; Arrel n’impose aucune stratégie.

Un Resource. Un panneau complet.

fields(), columns() et actions() suffisent à générer le formulaire, la table et les endpoints. Pas de DSL d'autorisation séparé : canViewAny(), canEdit()… délèguent à la Policy du modèle.

Lire le guide des Resources →
PostResource.php
final class PostResource extends Resource
{
    protected static string $model = Post::class;
    protected static string $icon = 'document-text';

    public function fields(): array
    {
        return [
            Text::make('title')->rules('required', 'max:255'),
            Select::make('status')->options(['draft', 'published']),
            Toggle::make('is_featured'),
        ];
    }

    public function columns(): array
    {
        return [
            Column::make('title')->searchable()->sortable(),
            Column::make('status')->as('badge'),
        ];
    }

    public function actions(): array
    {
        return [ViewAction::make(), EditAction::make(), DeleteAction::make()];
    }
}

Pricing

Licence par application en production.

Pousse

Pour un seul projet.

29€/ an

Renouvellement à 19€ / an

Contactez-nous
  • 1 application en production
  • Support par e-mail