O clima foi de aula prática mesmo: Danilo Sampaio e Virgílio (Virgão) tocaram o workshop construindo, ao vivo e sem script, um sistema de gerenciamento de eventos do zero em Laravel 11 + Filament v3.2, indo do "o que é o Filament" até customização de CSS via render hooks — trombando com bugs reais na hora (inclusive um deles ao vivo, que foi debugado publicamente) e usando isso para ensinar como investigar problema no Filament.
Destaques
- Instalação e arquitetura multi-painel:
filament:install panelse a decisão de criar três painéis separados (admin, customer logado e público sem auth) desde o início, ajustando o namespace das resources para não misturar tudo dentro deAdmin. - Table Builder na prática: badges com cor dinâmica via closure (
->color(fn ($state) => ...)), contagem de relacionamento N-N direto na coluna (counts()+ query builder na tabela pivô), filtros comSelectFilterusandorelationship()e filtros avançados comQueryBuildereRelationshipConstraint. - Reaproveitamento de formulário: criação de uma classe estática (
AddressFormGroup::make()) para não repetir o schema de endereço entre resources de usuário e evento — e uma camada de Service (AddressService) injetada via closure para chamar a API do ViaCEP. - Armadilha de performance real: mostrado ao vivo com Debugbar que carregar um select com relationship "solto" (sem filtrar por state) trouxe 150 mil cidades para a memória — 240MB por request — e como resolver carregando o select de forma reativa (
live()) a partir do estado anterior. - Relacionamentos N-N com dados extras na pivô: para usar Repeater ou Attach Action num N-N que precisa guardar campo adicional na tabela pivô (ex:
checked_at), é obrigatório criar um Model Pivot dedicado e um relacionamento à parte (ex:usersRepeater) só para esse uso — Eloquent padrão (belongsToMany) não basta. - Relation Manager e Infolist: criação de um Relation Manager para gerenciar atrações dentro do evento, reaproveitando o form da resource de atrações; e uso de Infolist para páginas de visualização (view/show) sem edição, no painel do cliente.
- Customização de tema sem sofrimento:
php artisan make:filament-theme, registro do tema no Panel Provider, e edição do CSS via classes hooks (fi-topbar,fi-topbar-item) para mudar cor de fundo, header e navegação sem!important. - Render Hooks: uso de
FilamentView::registerRenderHook()noboot()do Panel Provider para injetar componentes (view ou Livewire) em pontos fixos do layout, como rodapé e botão de WhatsApp flutuante, sem precisar publicar (e travar) as views do pacote.
Profundidade técnica
O workshop foi fundo em pegadinhas de Livewire por trás do Filament — o público aprendeu por que live()/reactive() mal usado (aplicado sem necessidade em todo campo) deixa o painel lento, e como isolar o problema com Debugbar antes de sair otimizando no escuro. Também tratou de decisões de arquitetura que a documentação não deixa óbvias, como a exigência de Model Pivot dedicado para repeaters e attach actions em N-N com colunas extras, e o cuidado ao usar ignoreRecord, disabledOn('edit') e regras de validação que se comportam diferente entre create e edit dentro do mesmo form compartilhado. No Q&A final, os palestrantes trataram export de tabela (CSV/Excel nativo, PDF via Action customizada), uso de cache e Wizard Form para steps, limitações reais de Select com listas grandes, e por que hoje eles não recomendam mais PWA em favor de ferramentas como Flutter Flow para apps nativos.
Faça parte do Clã
Tudo que rolou aqui foi só uma fatia do método completo que a Beer and Code ensina no dia a dia da mentoria — Laravel, Livewire, Filament e as decisões de arquitetura por trás de projetos reais de cliente. Se você quer sair do "vi um exemplo na internet e copiei sem entender" e ter acesso a encontros como esse, mentoria técnica e uma comunidade que troca soluções reais, entra no Clã Beer and Code.
Engenharia de IA virou profissão, e se aprende construindo, não assistindo. O Clã Beer and Code é o ambiente onde isso acontece ao vivo, toda semana: RAG, agentes, observabilidade e LLMOps em projetos reais, ao lado de quem já está em produção. É pago, é assinatura, e é exatamente o ambiente que estes encontros dão uma amostra.
Entrar no Clã