Centralisez tous les formulaires de vos sites web au même endroit via une API unique et simple,
pour une gestion simplifiée de vos données.
Puna est un panel d'administration auto-hébergé pour centraliser tous vos formulaires au même endroit. Branchez vos formulaires existants sur Puna via une API. Les soumissions arrivent directement dans l'application, sans avoir à définir de nouvelle base de données, gérer les champs ou maintenir les types de données vous-même.
- Sites & Formulaires - Structurez vos intégrations en créant des objets Site et Formulaire associés. Ces entités applicatives permettent de regrouper et d'identifier les soumissions par site et formulaire.
- API publique - Un seul endpoint
POST /api/v1/send/:codeavec authentification 3 couches (clé API, JWT du site, code du formulaire). Prend en chargeJSON&Multipart Form. - Soumissions - Chaque appel à l'API crée une entrée consultable, filtrable et exportable (Excel/CSV). L'historique complet des données reçues est accessible depuis l'interface de chaque site et onglet de formulaire.
- Authentification - Login local, sessions persistantes, 2FA TOTP optionnel et réinitialisation par email.
- RBAC - 5 rôles (
super_admin,owner,unique,editor,viewer) avec une matrice de permissions granulaire. - Admin & monitoring - Gestion des utilisateurs, visualiseur de logs, tableau de bord et antivirus ClamAV optionnel sur chaque upload.
- Serveur MCP - Exposez vos données à des agents IA (Claude, ChatGPT, Cursor…) via un serveur Model Context Protocol intégré (
POST /mcp). Chaque utilisateur gère ses propres clés d'accès. Les outils disponibles couvrent sites, formulaires, soumissions (liste, détail, recherche full-text, dernières entrées) et statistiques. Activable via la variable d'environnementMCP_ENABLED.
| Outil | Version | Obligatoire |
|---|---|---|
| Node.js | ≥ 24 | Oui |
| npm | ≥ 10 | Oui |
| MariaDB | ≥ 11 | Oui |
Optionnels :
- SMTP - nécessaire pour la réinitialisation de mot de passe et email de bienvenue lors de la création d'un user. Sans configuration SMTP, la fonctionnalité est simplement désactivée.
- ClamAV - antivirus pour scanner les fichiers uploadés. Doit être installé et démarré avant le serveur si
CLAMAV_ENABLED=true. accessible via socket
git clone https://github.com/FabioDevCode/Puna.git
cd Puna
npm run setup # génère le fichier .env de manière interactive
npm install
npm run devUne installation Docker et la référence complète de configuration sont disponibles dans la documentation.
Puna applique une approche défense en profondeur alignée sur l'OWASP Top 10 : en-têtes Helmet, protection CSRF, bcrypt, JWT + AES-CBC, sanitisation XSS, rate limiting, scan ClamAV et requêtes préparées via Sequelize.
Pour le détail complet, voir SECURITY.md.
| Outil | Type | Configuration |
|---|---|---|
| Vitest | Unit / Integration | vitest.config.js |
| Playwright | End-to-end | playwright.config.js |
Voir CONTRIBUTING.md pour les conventions et commandes.
Les contributions sont les bienvenues !
Consultez le guide complet dans CONTRIBUTING.md.
Ce projet est distribué sous licence GNU Affero General Public License v3 (AGPLv3). Voir License.md.