Skip to content

Latest commit

 

History

History
109 lines (74 loc) · 5.15 KB

File metadata and controls

109 lines (74 loc) · 5.15 KB

Puna Logo

Puna

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.

Licence AGPLv3 docker fabiodevcode/puna Coverage 75.99%


Présentation

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.


Fonctionnalités

  • 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/:code avec authentification 3 couches (clé API, JWT du site, code du formulaire). Prend en charge JSON & 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'environnement MCP_ENABLED.

Démarrage rapide

Prérequis

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

Installation (Développeur)

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 dev

Une installation Docker et la référence complète de configuration sont disponibles dans la documentation.


Technologies

Node.js Express Sequelize MariaDB
Handlebars TailwindCSS daisyUI


Sécurité

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.


Tests

Outil Type Configuration
Vitest Unit / Integration vitest.config.js
Playwright End-to-end playwright.config.js

Voir CONTRIBUTING.md pour les conventions et commandes.


Contribution

Les contributions sont les bienvenues !
Consultez le guide complet dans CONTRIBUTING.md.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3 (AGPLv3). Voir License.md.