À propos du projet

Pagoda est un kit de démarrage de développement web full-stack et un panneau d'administration écrit en Go. Ce n'est pas un framework mais un dépôt modèle : vous le clonez plutôt que d'utiliser `go get`, puis vous adaptez le code à votre propre application. Son objectif déclaré est de fournir une grande partie des fonctionnalités attendues d'un framework web complet tout en gardant tout le code sous votre contrôle, sans interfaces strictes et sans verrouillage. Fondation et pile technologique - Backend : Echo (framework HTTP), Ent (ORM avec génération de code), Gomponents (composants HTML écrits en Go). - Frontend : HTML rendu côté serveur avec HTMX pour les mises à jour AJAX/partielles, Alpine.js pour le comportement côté client, et DaisyUI sur Tailwind CSS pour le style. Le projet met l'accent sur la création d'interfaces modernes sans écrire de JavaScript ou de CSS, et même sans écrire de HTML directement. - Stockage : SQLite est la base de données par défaut, également utilisée pour les files de tâches persistantes en arrière-plan ; la mise en cache est en mémoire. Le README note que Postgres et Redis étaient auparavant les valeurs par défaut et renvoie à une branche non maintenue pour cette configuration. Fonctionnalités incluses - Conteneur de services avec injection de dépendances pour l'authentification, le cache, la configuration, la base de données, les fichiers, le courrier, l'ORM, les tâches, le validateur et les services web ; il peut être initialisé et arrêté proprement en un seul appel et est passé aux gestionnaires de routes. - Configuration via YAML avec remplacements par variables d'environnement utilisant viper, plus commutation d'environnements (notamment un environnement de test). - Migrations automatiques de base de données via Ent, et une base de données de test séparée (SQLite en mémoire par défaut). - Types d'entités ORM pour User et PasswordToken, avec des aides Makefile pour créer et générer de nouveaux types d'entités. La suppression d'Ent supprime également le panneau d'administration dynamique. - Sessions via Gorilla sessions, stockées dans des cookies et chiffrées ; le README avertit de changer la clé de chiffrement par défaut pour les environnements en direct. - Authentification : connexion/déconnexion, jetons de réinitialisation de mot de passe (hachés avec bcrypt, expiration configurable), inscription, un indicateur admin sur les utilisateurs, middleware pour exiger l'authentification, aucune authentification, ou accès admin, et vérification par e-mail. - Panneau d'administration avec génération de code, contrôle d'accès et feuille de route ; les captures d'écran montrent les vues de liste/édition d'entités et la surveillance des files de tâches. - Routage avec middleware personnalisé, gestionnaires, gestion des erreurs, redirections et aides de test (serveur HTTP, aides de requête/réponse, Goquery). - Couche UI : composants basés sur Gomponents, mises en page, pages, formulaires avec traitement de soumission, validation en ligne et protection CSRF, modèles, icônes, mise en cache de nœuds et messagerie flash. - Services supplémentaires : paginateur, cache (définir/obtenir/vider les données et les balises), tâches avec files, répartiteur et surveillance, cron, téléchargements de fichiers et fichiers statiques/publics avec cache-busting et en-têtes de contrôle de cache, e-mail, HTTPS et journalisation. Pour commencer Installez Go, clonez le dépôt, exécutez `make install` pour les outils optionnels (générateur Ent, Air pour le rechargement en direct, CLI Tailwind), créez un compte admin avec `make admin email=...` (la console affiche un mot de passe généré), puis exécutez `make run` ; l'application est disponible sur localhost:8000 par défaut avec les données dans le répertoire `dbs`. `make watch` active le rechargement en direct avec recompilation automatique du CSS. Licence et statut Le projet est sous licence MIT, mentionné dans Awesome Go, et dispose de badges CI de test et Go Report Card. Le README est détaillé et constitue en grande partie une visite guidée du codebase, ce qui le rend adapté aux développeurs qui souhaitent un point de départ complet tout en conservant la possibilité de remplacer n'importe quel composant.