- Um framework web simples e poderoso para o ecossistema Ruby, com base em “baixa abstração” e “baixo ceremony (low-ceremony)”, oferecendo uma estrutura centrada em página, formulário e ação única sem o conceito de controller e recurso REST
- Renderização HTML no servidor, escrita direta de JS/CSS, integração com OpenTelemetry, e ferramentas Ruby modernas como Sequel e OptionParser embutidas, com instalação e desenvolvimento em poucos minutos
- Estrutura baseada em classes, com gerenciamento de sessão, formulário e parâmetro orientado a tipos reais, minimizando o uso de métodos dinâmicos e hashes para alcançar código mais claro e documentação automática
- Aproveitamento da plataforma web moderna: validação integrada entre servidor e cliente, BrutJS (Web Components), hash e bundling de CSS com esbuild, e reforço de políticas de segurança e de fundamentos de design de banco de dados
- Configuração em YAML minimizada e baseada em Ruby/Hash, com nomenclatura e separação de responsabilidades claras, com objetivo de usar Ruby e tecnologias de navegador de forma divertida sem impor abstrações ou padrões desnecessários
Principais recursos do framework Brut
Estrutura totalmente nova – centrada em páginas, sem controllers
- No lugar de controller, recurso REST e ações de rota, é composto por páginas baseadas em classes, formulários e handlers de ação única
- HTML é gerado diretamente no servidor, enquanto JS/CSS podem ser escritos como você quiser
- Exemplo: uma página de exibição de horário pode ser definida diretamente como
TimePage < AppPage
Forte adoção da plataforma web moderna
- UX de formulário com validação integrada server-side e client-side
- Suporte a extensão progressiva de HTML com BrutJS (biblioteca de web components)
- Processamento de bundle de CSS e hash com esbuild, de forma simples, sem PostCSS ou SASS
Produtividade de desenvolvimento e fundamentos incluídos
- Instrumentação baseada em OpenTelemetry, acesso a dados com Sequel, automação de linha de comando com OptionParser
- Políticas de segurança padrão, valores padrão de colunas/foreign keys do banco, timezone-aware sempre, e localização (Localization) simplificada
- Testes com RSpec, geração de dados com Faker/FactoryBot, geração de HTML com Phlex
Exclusão de YAML, estrutura de configuração clara
- I18n baseado em Hash de Ruby, configuração dinâmica gerenciada por dotenv (YAML usado quase nunca)
- Exceção de uso de YAML: apenas docker-compose
Sem abstrações ou padrões desnecessários
- Nomenclatura e estrutura claras (ex.:
WidgetsPage é acessada por /widgets)
- Camada de dados (DB::Widget) e camada de domínio (Widget) podem ser separadas completamente
- Sem conceito de controller, lógica de negócio pode ser implementada do jeito que quiser
- Sem imposição de padrões funcionais complexos, mônadas, Proc etc.
Experiência de desenvolvimento e flexibilidade
- Ferramentas modernas do ecossistema Ruby, como RSpec, já incluídas por padrão
- Uso ativo de bibliotecas principais como Phlex (HTML), Faker/FactoryBot, Sequel e OpenTelemetry
- Em vez de repetitiva boilerplate/configuração/decisões, o foco é aproveitar a “diversão” de Ruby e das tecnologias do navegador
Por que Brut?
- Em vez da configuração repetitiva de frameworks existentes como Rails, das discussões constantes sobre arquitetura e estrutura e de flexibilidade desnecessária, busca-se a diversão no próprio código
- Como um framework de web app baseado em Ruby para construir e fazer deploy rapidamente, foca em produtividade e clareza
Início e roadmap futuro
- Imagem Docker oficial do Brut com suporte a criação e execução rápidas por comandos
- Exemplo de apps reais em produção como ADRs.cloud
- Previsão de atualizações contínuas para a versão 1.0 e para o roadmap oficial
Ainda não há comentários.