DEV Community

Jackson Pires for Vídeos de Ti

Posted on

🇧🇷 E se existisse uma interface admin baseada na RubyUI? Assim nasceu a RubyUI Admin.

Vivemos um momento curioso no desenvolvimento de software.

Com IA, gerar código, estruturar projetos e até explorar novas ideias nunca foi tão rápido. Aquela desculpa de "isso daria muito trabalho" simplesmente deixou de existir. Se existe uma ferramenta que você gostaria de usar e ela ainda não existe, talvez este seja o melhor momento para criá-la.

Foi exatamente assim que nasceu a RubyUI Admin.

https://github.com/jacksonpires/ruby_ui_admin/

Durante algum tempo acompanhei projetos como o Avo e sempre gostei da experiência de construir interfaces administrativas modernas para aplicações Rails. Ao mesmo tempo, comecei a utilizar cada vez mais a RubyUI, baseada em Phlex, para desenvolver interfaces server-side utilizando componentes Ruby.

Então surgiu a pergunta:

E se existisse uma interface administrativa totalmente construída sobre a RubyUI?

A resposta foi criar a minha própria.


O que é a RubyUI Admin?

A RubyUI Admin é uma engine para Ruby on Rails que transforma seus modelos Active Record em uma interface administrativa completa.

Com poucos arquivos você já possui:

  • CRUD completo
  • Paginação
  • Filtros
  • Scopes
  • Dashboards
  • Ações customizadas
  • Ações em lote
  • Autorização
  • Internacionalização (EN e PT-BR)

Tudo isso renderizado no servidor utilizando RubyUI + Phlex, com melhorias progressivas através de Hotwire (Turbo + Stimulus).


A interface faz parte da sua aplicação

Uma das decisões de arquitetura mais importantes do projeto foi não criar mais um framework visual isolado.

Em vez disso, a RubyUI Admin utiliza os próprios componentes RubyUI da aplicação hospedeira.

Isso significa que:

  • o admin acompanha o mesmo Design System da aplicação;
  • qualquer customização feita em um componente é refletida automaticamente no admin;
  • não existe uma cópia dos componentes para manter sincronizada.

Na prática, o painel administrativo deixa de parecer um produto separado e passa a fazer parte da aplicação.


Server-side first

Assim como Rails sempre incentivou, a RubyUI Admin aposta em renderização no servidor.

JavaScript existe apenas para melhorar a experiência.

Sem JavaScript a aplicação continua funcionando normalmente.

Turbo e Stimulus entram apenas para tornar algumas interações mais agradáveis, como:

  • modais;
  • notificações;
  • abas;
  • linhas clicáveis;
  • pequenas interações da interface.

Documentação dentro da própria aplicação

Uma funcionalidade que gosto bastante é que a própria gem serve sua documentação.

Depois de montar a engine, basta acessar:

/admin/docs
Enter fullscreen mode Exit fullscreen mode

Toda a documentação é renderizada como HTML dentro da própria aplicação.

Isso significa que você pode consultar exemplos sem precisar abrir outra aba do navegador.

Durante o desenvolvimento ela já vem habilitada e, se desejar, também pode ser disponibilizada em produção protegida pela autenticação da aplicação.


Recursos disponíveis

Hoje a RubyUI Admin já oferece:

  • CRUD completo
  • Recursos configuráveis
  • Catálogo completo de campos
  • Paginação
  • Filtros
  • Scopes
  • Dashboards
  • Cards de métricas
  • Ações customizadas
  • Ações em lote
  • Policies utilizando Action Policy
  • Internacionalização
  • Diversos generators
  • Customização através de classes Ruby

E o projeto continua evoluindo.

Algumas funcionalidades planejadas para versões futuras incluem gerenciamento avançado de associações e novos formatos de visualização.


Filosofia do projeto

Desde o início alguns princípios guiaram o desenvolvimento.

Tudo é Ruby

Recursos, policies, filtros, dashboards e ações são apenas classes Ruby.

Nada fica escondido.

Quando você precisar personalizar algum comportamento, basta sobrescrever ou estender o que desejar.


Progressivamente aprimorado

O foco sempre foi entregar uma aplicação funcional antes de adicionar JavaScript.

Essa abordagem deixa a aplicação mais robusta, simples de manter e muito alinhada com a filosofia atual do Rails.


Sem reinventar seu Design System

Ao utilizar RubyUI, a aplicação inteira compartilha os mesmos componentes.

Você mantém apenas uma implementação de botões, tabelas, diálogos, cards e demais elementos visuais.


Instalação

Adicionar a gem é bastante simples.

gem "ruby_ui_admin"
Enter fullscreen mode Exit fullscreen mode

Depois monte a engine:

mount_ruby_ui_admin at: "/admin"
Enter fullscreen mode Exit fullscreen mode

Configure a autenticação e autorização e você já pode começar a criar seus recursos.


Ainda está no começo

Apesar de já ser perfeitamente utilizável, a RubyUI Admin ainda está em evolução.

Meu objetivo é construir uma alternativa moderna para aplicações Rails que utilizam RubyUI, mantendo toda a experiência alinhada ao ecossistema Rails, Hotwire e Phlex.

Se você utiliza RubyUI, acredito que vale a pena experimentar.

Toda contribuição, feedback e sugestões são muito bem-vindos.

Espero que esse seja apenas o começo.

Um agradecimento especial a Ítalo Moura que me ajudou com os testes da gem.

Top comments (0)