callcocam / laravel-raptor
This is my package laravel-raptor
Fund package maintenance!
Claudio Campos
Installs: 285
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/callcocam/laravel-raptor
Requires
- php: ^8.2
- illuminate/contracts: ^12.0
- inertiajs/inertia-laravel: ^2.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.18
- nunomaduro/collision: ^8.6
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
This package is auto-updated.
Last update: 2025-12-05 19:12:21 UTC
README
Um pacote completo Laravel para construção rápida de aplicações multi-tenant com sistema de permissões integrado, formulários dinâmicos e tabelas interativas usando Inertia.js e shadcn-vue.
Características Principais
- Multi-Tenancy Completo: Suporte para subdomínios e domínios customizados
- Sistema Shinobi: Gerenciamento robusto de roles e permissões
- Form Fields Modernos: Componentes Vue 3 usando primitivos shadcn-vue
- Table Columns Personalizadas: 9+ tipos de colunas pré-configuradas
- Controllers Inteligentes: Sistema de controllers com métodos padronizados
- Navegação Automática: Geração automática de menus baseada em controllers
- Inertia.js Integrado: SSR-ready com TypeScript
Requisitos
- PHP 8.2+
- Laravel 12.0+
- Node.js 18+
- Inertia.js 2.0+
Instalação
Instale o pacote via Composer:
composer require callcocam/laravel-raptor
Publique os arquivos de configuração:
php artisan vendor:publish --tag="raptor-config"
Publique as migrations:
php artisan vendor:publish --tag="raptor-migrations"
Execute as migrations:
php artisan migrate
Configuração Rápida
1. Configure o arquivo .env
RAPTOR_MAIN_DOMAIN=localhost RAPTOR_LANDLORD_SUBDOMAIN=landlord RAPTOR_DB_STRATEGY=shared
2. Adicione o trait HasRolesAndPermissions ao seu User Model
use Callcocam\LaravelRaptor\Support\Shinobi\HasRolesAndPermissions; class User extends Authenticatable { use HasRolesAndPermissions; }
3. Configure seus controllers
use Callcocam\LaravelRaptor\Http\Controllers\TenantController; class ProductController extends TenantController { public function model(): ?string { return Product::class; } public function getPages(): array { return [ 'index' => Index::route('/products') ->label('Produtos') ->icon('Package'), ]; } protected function form(Form $form): Form { return $form->columns([ TextField::make('name', 'Nome')->required(), TextareaField::make('description', 'Descrição'), ]); } protected function table(TableBuilder $table): TableBuilder { return $table->columns([ TextColumn::make('name', 'Nome')->searchable(), DateColumn::make('created_at', 'Criado em')->relative(), ]); } }
Documentação Completa
Acesse a documentação completa em /docs:
- Form Fields - Componentes de formulário
- Table Columns - Colunas de tabela personalizadas
- Controllers - Estrutura de controllers
- Shinobi - Sistema de roles e permissões
- Multi-Tenancy - Configuração de multi-tenancy
- Migration Guide - Migração de FormColumn para FormField
- Examples - Exemplos práticos
Início Rápido
Criar um CRUD Completo
// 1. Crie seu Model php artisan make:model Product -m // 2. Crie o Controller php artisan make:controller Tenant/ProductController // 3. Estenda TenantController e implemente os métodos class ProductController extends TenantController { public function model(): ?string { return Product::class; } // Implemente: getPages(), form(), table() } // 4. As rotas são registradas automaticamente!
Form Fields Disponíveis
FormFieldText- Input de texto com prepend/appendFormFieldTextarea- Área de texto com contadorFormFieldEmail- Campo de email validadoFormFieldPassword- Senha com toggle de visibilidadeFormFieldNumber- Input numéricoFormFieldDate- Seletor de data/datetimeFormFieldSelect- Select com normalizaçãoFormFieldCheckbox- Checkbox com layouts flexíveisFormFieldFileUpload- Upload com drag & dropFormFieldHidden- Campo oculto
Table Columns Disponíveis
TextColumn- Texto simplesEmailColumn- Email formatadoDateColumn- Data com formatos customizáveisBooleanColumn- Sim/Não com coresPhoneColumn- Telefone com formatação BRStatusColumn- Status com badges coloridosMoneyColumn- Valores monetários (BRL, USD, EUR)ImageColumn- Exibição de imagensBadgeColumn- Badges personalizados
Multi-Tenancy
O Laravel Raptor suporta dois modos de multi-tenancy:
Shared Database (Padrão)
RAPTOR_DB_STRATEGY=shared
Todos os tenants compartilham o mesmo banco de dados. Os registros são isolados pela coluna tenant_id.
Separate Database
RAPTOR_DB_STRATEGY=separate RAPTOR_DB_PREFIX=tenant_
Cada tenant possui seu próprio banco de dados (ex: tenant_1, tenant_2).
Sistema Shinobi (Roles & Permissions)
// Criar uma role $role = Role::create(['name' => 'admin', 'slug' => 'admin']); // Criar uma permissão $permission = Permission::create([ 'name' => 'Criar Produtos', 'slug' => 'products.create' ]); // Atribuir permissão à role $role->permissions()->attach($permission); // Atribuir role ao usuário $user->roles()->attach($role); // Verificar permissões if ($user->hasPermission('products.create')) { // usuário pode criar produtos }
Exemplo de Uso
Formulário Completo
protected function form(Form $form): Form { return $form->columns([ TextField::make('name', 'Nome do Produto') ->required() ->placeholder('Digite o nome'), SelectField::make('category_id', 'Categoria') ->options(Category::pluck('name', 'id')) ->searchable(), TextareaField::make('description', 'Descrição') ->maxLength(500) ->rows(5), CheckboxField::make('active', 'Ativo') ->default(true), ]); }
Tabela com Filtros
protected function table(TableBuilder $table): TableBuilder { return $table ->columns([ TextColumn::make('name', 'Nome')->searchable(), StatusColumn::make('status', 'Status') ->statuses([ 'active' => ['label' => 'Ativo', 'color' => 'success'], 'inactive' => ['label' => 'Inativo', 'color' => 'danger'], ]), DateColumn::make('created_at', 'Criado')->relative(), ]) ->actions([ EditAction::make('products.edit'), DeleteAction::make('products.destroy'), ]); }
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.