The problem
Every Rails team reaches the same moment. Some part of the product needs an admin panel and the options are not great. Generate a bunch of scaffolding and spend the next two years maintaining code nobody wrote on purpose. Or pull in a framework that becomes its own ecosystem, with its own upgrades, its own conventions, its own bugs.
We wanted a third option: describe the admin you want, let the gem render it, keep the escape hatch open.
Approach
- Configuration, not generation. Avo resources are Ruby classes that describe fields, actions, filters, and permissions. No code generation means no generated code to maintain.
- Rails-native, Hotwire-first. Avo uses Turbo and Stimulus so interactions feel snappy without a SPA. A Rails team does not need to learn a new frontend stack to extend it.
- The escape hatch is free. Every Avo resource maps to an ordinary Rails controller action underneath. If you outgrow a screen, you can drop into Rails, not rewrite.
- Ship the boring parts by default. Auth, roles, filters, search, CSV export. Every admin needs these. Avo includes them so nobody has to reinvent them.
- Small surface, deep features. One DSL. Opinionated defaults. If you need to override, you override in normal Ruby, not a new templating language.
Outcome
- Avo shipped as an open-source Rails gem. Still actively maintained at avohq.io.
- Completed YC Startup School as a team.
- Grew into a real ecosystem with plugins, docs and a community of Rails teams using it in production.
Stack notes
Ruby on Rails at the core. Hotwire (Turbo + Stimulus) for the panel interactions. Tailwind for styling so teams can restyle without learning a bespoke design system. PostgreSQL for the apps it runs on top of. The whole thing is designed so a senior Rails engineer can read the source and feel at home inside an hour.