PHPackages                             josenildotiago/crud - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. josenildotiago/crud

ActiveLibrary

josenildotiago/crud
===================

Modern CRUD generator with dynamic themes for Laravel 12 + React.js

3.1.4(7mo ago)0303↓100%MITPHPPHP &gt;=8.2.0

Since Apr 2Pushed 7mo ago1 watchersCompare

[ Source](https://github.com/josenildotiago/crud)[ Packagist](https://packagist.org/packages/josenildotiago/crud)[ RSS](/packages/josenildotiago-crud/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (11)Versions (40)Used By (0)

Laravel CRUD Generator v3.0.18
==============================

[](#laravel-crud-generator-v3018)

Um pacote moderno para Laravel que gera operações CRUD completas com integração React.js e sistema de temas dinâmicos.

🚀 Características Principais
----------------------------

[](#-características-principais)

### ✨ Compatibilidade Laravel 12

[](#-compatibilidade-laravel-12)

- **Arquitetura Moderna**: Totalmente atualizado para Laravel 12+ com suporte PHP 8.2+
- **Integração AppLayout**: Usa AppLayout (ao invés do AuthenticatedLayout descontinuado)
- **Sistema de Breadcrumbs**: Navegação hierárquica abrangente
- **Campos Inteligentes**: Detecção automática de campos fillable para React useForm
- **Organização de Rotas**: Arquivos de rota separados por modelo com middleware adequado
- **Suporte Multi-Database**: Compatível com MySQL, PostgreSQL, SQLite e SQL Server
- **Design RESTful**: Gera controllers e rotas RESTful limpos

### 🎨 Sistema de Temas Dinâmicos

[](#-sistema-de-temas-dinâmicos)

- **Sistema de Cores OKLCH**: Suporte ao espaço de cor moderno para temas vibrantes e consistentes
- **CSS Custom Properties**: Mudança de tema em tempo real sem reload da página
- **Integração React**: Hooks e componentes integrados para gerenciamento de temas
- **Temas Persistentes**: Preferências do usuário salvas entre sessões
- **Criação Automática**: Comando para criar novos temas personalizados

### ⚛️ Integração React.js + shadcn/ui

[](#️-integração-reactjs--shadcnui)

- **Suporte Inertia.js**: SSR sem complicações com backend Laravel
- **TypeScript Pronto**: Suporte completo ao TypeScript para type safety
- **Componentes Modernos**: AppLayout com navegação breadcrumb
- **shadcn/ui Integration**: Uso completo de Button, Card, Input, Label
- **Formulários Inteligentes**: Integração fillableColumns com useForm
- **Design Responsivo**: Padrões mobile-first

### 🛠️ Funcionalidades CRUD Avançadas

[](#️-funcionalidades-crud-avançadas)

- **Operações em Lote**: Ações multi-select para gerenciamento eficiente de dados
- **Busca Avançada**: Busca em tempo real com debouncing
- **Paginação Inteligente**: Paginação otimizada com preservação de estado
- **Validação de Formulários**: Validação client e server-side
- **Upload de Arquivos**: Manipulação integrada de arquivos com preview
- **Export/Import**: Exportação CSV com colunas customizáveis

📦 Instalação
------------

[](#-instalação)

```
composer require josenildotiago/crud
```

🎯 Início Rápido
---------------

[](#-início-rápido)

### 1. Instalar Sistema de Temas (Opcional)

[](#1-instalar-sistema-de-temas-opcional)

```
php artisan crud:install-theme-system
```

Este comando irá:

- Detectar seu stack frontend (React.js + Inertia.js)
- Instalar configuração de temas
- Gerar componentes React TypeScript
- Configurar CSS custom properties

### 2. Criar Seu Primeiro Tema (Opcional)

[](#2-criar-seu-primeiro-tema-opcional)

```
php artisan crud:create-theme meu-tema
```

Prompts interativos irão guiá-lo através de:

- Nome e identificador do tema
- Cores primárias e secundárias (formato OKLCH)
- Seleção de tema claro/escuro
- Geração automática de paleta de cores

### 3. Gerar Recursos CRUD

[](#3-gerar-recursos-crud)

```
php artisan getic:install users
```

Este comando gera:

- **Model**: `app/Models/User.php` com relacionamentos
- **Controller**: `app/Http/Controllers/UserController.php` otimizado para Inertia.js
- **Componentes React**: Interface CRUD completa em TypeScript
    - `Create.tsx` - Formulário de criação com shadcn/ui
    - `Edit.tsx` - Formulário de edição
    - `Index.tsx` - Listagem com paginação e busca
    - `Show.tsx` - Visualização de registro
- **Routes**: `routes/user.php` com middleware auth e verified
- **Form Request**: `app/Http/Requests/UserRequest.php` para validação

#### Opções Avançadas

[](#opções-avançadas)

```
# Com API RESTful
php artisan getic:install products --api

# Com relacionamentos automáticos
php artisan getic:install orders --relationship

# Stack específico
php artisan getic:install categories --stack=react

# Com integração de temas
php artisan getic:install posts --theme
```

🎨 Sistema de Temas
------------------

[](#-sistema-de-temas)

### Como Usar no React

[](#como-usar-no-react)

```
import { useAppearance } from "@/hooks/use-appearance";
import { ThemeSelector } from "@/components/theme-selector";

function MyComponent() {
  const { theme, themeId, updateTheme } = useAppearance();

  return (

      {/* Tema aplicado automaticamente via CSS custom properties */}

  );
}
```

### Temas Disponíveis

[](#temas-disponíveis)

- **Padrão**: Preto e branco clássico
- **Azul**: Profissional e confiável
- **Verde**: Natureza e crescimento
- **Roxo**: Moderno e criativo
- **Vermelho**: Energia e ação
- **+ Personalizados**: Crie quantos quiser!

📋 Comandos Disponíveis
----------------------

[](#-comandos-disponíveis)

```
# Instalar sistema de temas
php artisan crud:install-theme-system

# Criar novo tema personalizado
php artisan crud:create-theme {nome}

# Gerar CRUD completo
php artisan getic:install {tabela}

# Com API RESTful
php artisan getic:install {tabela} --api

# Com relacionamentos
php artisan getic:install {tabela} --relationship

# Com temas
php artisan getic:install {tabela} --theme
```

🎯 Exemplo de Uso Completo
-------------------------

[](#-exemplo-de-uso-completo)

### 1. Instalação e Configuração

[](#1-instalação-e-configuração)

```
# Instalar pacote
composer require josenildotiago/crud

# Instalar sistema de temas
php artisan crud:install-theme-system

# Criar tema personalizado
php artisan crud:create-theme corporativo
```

### 2. Gerar CRUD para Produtos

[](#2-gerar-crud-para-produtos)

```
php artisan getic:install products --api --theme
```

### 3. Resultado Gerado

[](#3-resultado-gerado)

#### Controller (`app/Http/Controllers/ProductController.php`)

[](#controller-apphttpcontrollersproductcontrollerphp)

```
class ProductController extends Controller
{
    public function index(Request $request): InertiaResponse
    {
        $products = Product::query()
            ->when($request->search, function ($query, $search) {
                $query->where('name', 'like', "%{$search}%")
                      ->orWhere('description', 'like', "%{$search}%");
            })
            ->orderBy('created_at', 'desc')
            ->paginate(10)
            ->withQueryString()
            ->through(fn ($product) => [
                'id' => $product->id,
                'name' => $product->name,
                'description' => $product->description,
                'price' => $product->price,
                'created_at' => $product->created_at->format('d/m/Y H:i'),
                'updated_at' => $product->updated_at->format('d/m/Y H:i'),
            ]);

        return Inertia::render('Product/Index', [
            'products' => $products,
            'filters' => ['search' => $request->search],
        ]);
    }
}
```

#### Componente React (`resources/js/pages/Product/Create.tsx`)

[](#componente-react-resourcesjspagesproductcreatetsx)

```
export default function Create() {
  const { data, setData, post, processing, errors } = useForm({
    name: "",
    description: "",
    price: "",
  });

  return (

            Cadastrar novo produto
            Cadastre um novo produto

                Nome:
                 setData("name", e.target.value)}
                  required
                />
                {errors.name && (
                  {errors.name}
                )}

              {/* Outros campos gerados automaticamente */}

              {processing && } Cadastrar

  );
}
```

#### Rotas (`routes/product.php`)

[](#rotas-routesproductphp)

```
