# Tecnologias e Stack ## Backend - **Linguagem**: PHP 8.1+ - **ORM**: Illuminate/Database (Eloquent) - *Apenas para ORM, não usar outros componentes do Laravel desnecessariamente.* - 🚫 **Paginação**: NÃO use o método `paginate()` do Eloquent nem a classe `Illuminate\Pagination`. O pacote de paginação do Laravel não está instalado. Implemente paginação manual usando `skip()`, `take()` e `count()`. - **Template Engine**: Twig - **Container**: PHP-DI - **Router**: Nikic/Fast-Route - **HTTP**: Nyholm/PSR-7 - **Logging**: Monolog - **Imagens**: Intervention/Image - **Excel**: PhpSpreadsheet - **PDF**: FPDF - **QR Code**: Endroid/QrCode ## Frontend - **Framework CSS**: Bootstrap 5.3 - **JavaScript Padrão**: **Vanilla JS** (JavaScript puro) é o padrão para todas as interações no frontend. - **Alpine.js** (Micro-framework para interatividade): - ⚠️ **RESTRITO**: Use Alpine.js APENAS em componentes que exijam alta reatividade ou gerenciamento de estado complexo onde o Vanilla JS resultaria em código excessivamente verboso ou difícil de manter. - 🚫 **PROIBIDO**: É estritamente proibido o uso de Alpine.js em selects dinâmicos que utilizam o módulo `globallists` (ex: Estado/Cidade). Nestes casos, o uso de Vanilla JS é mandatório. - **Ícones**: **Bootstrap Icons** (OBRIGATÓRIO). - 🚫 **PROIBIDO**: Font Awesome, Material Icons. - **Editor Rico**: Quill (ver regras específicas em `RULES.md` ou `PADROES_CODIGO.md`). - **Tabelas**: **DataTables.js (Versão COMPLETA)**. - 🚫 **PROIBIDO**: `simple-datatables`. Use sempre a versão completa baseada em jQuery incluída no `dashboard.twig`. - **Template Admin**: SBAdmin2 ## Ambiente de Desenvolvimento - **Docker**: Container `dockersyscms`. - **URL Local**: `http://localhost:16240` - **Banco de Dados**: MySQL - Host: `localhost` (ou service name no docker) - DB: `syscms` - User: `root` - Pass: `root` ## Regras de Dependências 1. **Vendor**: Nunca modificar arquivos na pasta `vendor/`. 2. **Composer**: Gerenciar todas as dependências PHP via `composer.json`.