-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Contexto
Atualmente, o AkôFlow Admin utiliza arquivos HTML com interpolação de strings para servir as páginas do painel administrativo. Apesar de atender às necessidades do usuário em termos de configuração e execução dos workflows, essa abordagem carece de boas práticas modernas de desenvolvimento front-end:
- Não é possível testar unitariamente os componentes;
- Não há framework para renderização e reutilização de elementos de UI;
- O AkôFlow Engine absorve responsabilidades relacionadas à interface, aumentando seu escopo indevidamente.
Proposta
Gostaria de propor a utilização do Vite + React para a geração estática do AkôFlow Admin, em um módulo separado do AkôFlow Engine. Com isso, se tornará possível:
- Reutilizar componentes de forma estruturada;
- Padronizar a interface e a experiência de usuário do AkôFlow;
- Melhorar e controlar a qualidade através de:
- Testes unitários;
- Testes de fim a fim com navegadores reais;
- Checks automáticos de qualidade em PRs (ex.:
test,lint,build);
- Comprimir e otimizar o bundle final automaticamente.
- Reduzir e isolar as responsabilidades do engine, mantendo a UI exclusivamente no AkôFlow Admin.
Para melhorar a organização do repositório, proponho também a adoção do padrão monorepo, no qual diferentes módulos coexistem no mesmo repositório. Ferramentas como Turborepo, NPM Workspaces e Lerna podem auxiliar, embora a mudança mais importante seja estrutural:
.
└── modules/
├── akoflow-engine
└── akoflow-admin
Nesse formato:
akoflow-enginemantém o projeto Go e as funcionalidades centrais;akoflow-adminmantém o projeto Vite + React e toda a lógica da interface administrativa.
O akoflow-engine continuaria servindo o AkôFlow Admin, mas agora servindo arquivos estáticos, sem qualquer interpolação dinâmica.
Fluxo
- O
akoflow-adminexecutanpm run build, produzindo uma pasta estática (ex.:dist/). - O
akoflow-engine, ao ser compilado, incorpora ou referencia essa pasta. - Qualquer requisição para
/akoflow-admin/*retorna arquivos dessa pasta, sem manipulação ou templates Go.
Esse modelo é simples, eficiente e reduz responsabilidades do engine.
Migração
Como já existe um AkôFlow Admin em produção, a migração pode (e deve) ser feita de forma gradual. Existem duas abordagens possíveis:
-
Branch dedicada (ex.:
feature-vite-akoflow-admin):- Evita exposição prematura de uma interface incompleta.
- Facilita reverts caso a proposta não avance.
-
Duas versões lado a lado, controladas por feature flag (minha preferência):
- Evita conflitos de código entre versões;
- Permite testar ambas as implementações durante o desenvolvimento;
- Possibilita alternar entre uma versão e outra rapidamente;
- Reduz riscos durante a transição.
Versionamento
Com a adoção de um monorepo, o versionamento seria unificado: uma única versão para todo o repositório, em vez de versões independentes por módulo.
Acesso à API
Atualmente, o AkôFlow Admin consome a API via http://localhost:8080. Esse comportamento pode ser mantido ou parametrizado através de uma variável de ambiente (process.env.BASE_API_URL).
O Vite substitui essas variáveis em tempo de build, garantindo URLs corretas no bundle final.
CI
A migração introduz novas necessidades de pipeline, incluindo:
- Instalação das dependências do
akoflow-admin(npm install); - Execução dos checks de qualidade (
lint,test, etc.); - Execução do build estático (
npm run build); - Inclusão da pasta resultante no processo de build e distribuição do
akoflow-engine.
Será necessário criar novos checks de qualidade específicos para o front-end e ajustar o script de compilação atual para incorporar o build estático gerado pelo Vite.