Sari la conținut
LABS
Avo HQ202116 luni (Mai 2020 - Aug 2021)

Avo: construind un framework admin Rails zero-maintenance pe care echipele îl păstrează (16 luni)

Am co-fondat un framework admin open-source pentru Ruby on Rails, încă livrat la avohq.io. Bazat pe configurare, fără generare de cod, proiectat ca echipele să-l extindă fără să-l întrețină.

  • Ruby on Rails
  • Hotwire / Stimulus
  • Tailwind
  • PostgreSQL
Vezi proiectul live

Provocarea

Orice echipă Rails ajunge la același moment. O parte din produs are nevoie de un admin panel, iar opțiunile existente nu sunt grozave. Ori generezi scaffolding și cheltuiești următorii doi ani întreținând cod pe care nimeni nu l-a scris intenționat. Ori tragi în proiect un framework care devine propriul lui ecosistem, cu propriile upgrade-uri, convenții și bug-uri.

Tiparul era consistent: echipele alegeau o opțiune, trăiau cu povara de întreținere un an, și fie o abandonau fie o rescriau. Nu exista o a treia cale: ceva ce descrii, nu generezi; ceva Rails-native îndeajuns ca un inginer senior să se simtă acasă; ceva cu un escape hatch care nu cere rewrite când depășești un ecran.

Soluția

Am construit Avo ca gem Rails configuration-first. Deciziile de design cheie:

  • Descrie, nu genera. Resursele Avo sunt clase Ruby care descriu fields, acțiuni, filtre și permisiuni într-un DSL. Fără fișiere generate în codebase, fără divergență între versiunea gem-ului și ce a fost generat la instalare.
  • Rails-native, Hotwire-first. Avo folosește Turbo și Stimulus pentru ca interacțiunile să fie rapide fără SPA. O echipă Rails nu trebuie să învețe un stack frontend nou pentru a extinde sau suprascrie ceva.
  • Escape hatch gratuit. Fiecare resursă Avo se mapează pe un controller Rails normal dedesubt. Dacă depășești un ecran, cobori în Rails, nu într-un limbaj de template nou.
  • Părțile plictisitoare by default. Auth, roluri, filtre, căutare, export CSV. Orice admin are nevoie de ele. Avo le include ca echipele să nu le reinventeze de la proiect la proiect.

Am terminat YC Startup School pe durata construcției, o constrângere externă utilă pentru disciplina de scope și cadența de lansare.

Cum obții un admin panel

Înainte

Generezi scaffolding și întreții doi ani cod pe care nimeni nu l-a scris intenționat, ori tragi în proiect un framework care devine propriul ecosistem cu upgrade-uri, convenții și bug-uri proprii.

După

Descrii admin-ul într-un DSL Ruby. Fără fișiere generate în codebase, fără divergență între versiunea gem-ului și ce a fost generat la instalare.

Când depășești un ecran

Înainte

Echipele alegeau o opțiune, trăiau cu povara de întreținere un an, și fie o abandonau fie o rescriau. Nicio a treia cale care să nu ceară rewrite.

După

Fiecare resursă Avo se mapează pe un controller Rails normal dedesubt. Dacă depășești un ecran, cobori în Rails, nu într-un limbaj de template nou.

Nu sunt publicate sau inventate cifre de utilizare; diferența este calitativă.

Rezultatele

Avo a ieșit ca gem open-source pentru Rails. E încă întreținut activ și crește la avohq.io: cinci ani după build-ul inițial, ceea ce este proba reală de concept pentru un framework fără taxă de întreținere pe partea utilizatorilor.

Gem-ul a crescut un ecosistem de plugin-uri, documentație și o comunitate de echipe Rails care îl folosesc în producție. E recomandat de comunitatea Rails/Hotwire ca opțiune idiomatică pentru echipele care vor un admin fără să-l întrețină.

Nu sunt disponibile cifre de utilizare de partajat: proiectul e open-source și auto-hosted de adoptatori, deci download counts nu sunt o măsură semnificativă a utilizării în producție. Dovada e că gem-ul încă livrează.

Distribuie

Spune-ne ce construiești.

Programează o discuție

Alege ce categorii de cookies accepți. Poți schimba oricând din footer.