Sobre o projeto
Pagoda é um kit inicial de desenvolvimento web full-stack e painel administrativo escrito em Go. Não é um framework, mas um repositório de template: você o clona em vez de usar `go get`, e depois adapta o código à sua própria aplicação. Seu objetivo declarado é fornecer grande parte da funcionalidade esperada de um framework web completo, mantendo todo o código sob seu controle, sem interfaces rígidas e sem lock-in.
Base e stack
- Backend: Echo (framework HTTP), Ent (ORM com geração de código), Gomponents (componentes HTML escritos em Go).
- Frontend: HTML renderizado no servidor com HTMX para AJAX/atualizações parciais, Alpine.js para comportamento no lado do cliente e DaisyUI sobre Tailwind CSS para estilização. O projeto enfatiza a construção de UIs modernas sem escrever JavaScript ou CSS, e até mesmo sem escrever HTML diretamente.
- Armazenamento: SQLite é o banco de dados padrão, também usado para filas persistentes de tarefas em segundo plano; o cache é em memória. O README observa que Postgres e Redis eram anteriormente os padrões e aponta para um branch não mantido para essa configuração.
Funcionalidades incluídas
- Contêiner de serviços com injeção de dependência para autenticação, cache, configuração, banco de dados, arquivos, e-mail, ORM, tarefas, validador e serviços web; pode ser inicializado e encerrado graciosamente em uma única chamada e é passado para os manipuladores de rotas.
- Configuração via YAML com sobrescritas por variáveis de ambiente usando viper, além de alternância de ambientes (notavelmente um ambiente de teste).
- Automigrações de banco de dados através do Ent, e um banco de dados de teste separado (SQLite em memória por padrão).
- Tipos de entidade ORM para User e PasswordToken, com auxiliares no Makefile para criar e gerar novos tipos de entidade. Remover o Ent também remove o painel administrativo dinâmico.
- Sessões via Gorilla sessions, armazenadas em cookies e criptografadas; o README alerta para alterar a chave de criptografia padrão em ambientes de produção.
- Autenticação: login/logout, tokens de redefinição de senha (hashed com bcrypt, expiração configurável), registro, uma flag de administrador nos usuários, middleware para exigir autenticação, sem autenticação ou acesso de administrador, e verificação de e-mail.
- Painel administrativo com geração de código, controle de acesso e um roadmap; capturas de tela mostram visualizações de lista/edição de entidades e monitoramento de filas de tarefas.
- Roteamento com middleware personalizado, manipuladores, tratamento de erros, redirecionamentos e auxiliares de teste (servidor HTTP, auxiliares de requisição/resposta, Goquery).
- Camada de UI: componentes baseados em Gomponents, layouts, páginas, formulários com processamento de envio, validação inline e proteção CSRF, modelos, ícones, cache de nós e mensagens flash.
- Serviços adicionais: paginador, cache (definir/obter/limpar dados e tags), tarefas com filas, dispatcher e monitoramento, cron, uploads de arquivos e arquivos estáticos/públicos com cache-busting e cabeçalhos de cache-control, e-mail, HTTPS e logging.
Primeiros passos
Instale o Go, clone o repositório, execute `make install` para ferramentas opcionais (gerador Ent, Air para recarregamento ao vivo, Tailwind CLI), crie uma conta de administrador com `make admin email=...` (o console imprime uma senha gerada), depois execute `make run`; o aplicativo fica disponível em localhost:8000 por padrão com dados no diretório `dbs`. `make watch` habilita recarregamento ao vivo com recompilação automática de CSS.
Licenciamento e status
O projeto é licenciado sob MIT, mencionado no Awesome Go, e possui badges de testes de CI e Go Report Card. O README é detalhado e em grande parte um tour guiado pelo código-fonte, tornando-o adequado para desenvolvedores que desejam um ponto de partida com baterias incluídas, mantendo a capacidade de substituir qualquer componente.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.