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.