partiduo-form
= partiduo-form — formulaires publics par jeton :toc: left :toc-title: Table des matières :icons: font
Partiduo est le portage en Crystal de https://noalyss.eu[NOALYSS], logiciel libre de comptabilité créé et maintenu par Dany De Bontridder. Partiduo n'est pas un projet officiel NOALYSS.
Ce dépôt est l'extension FORM de Partiduo (ADR-003), successeur de l'extension noalyss-form (FVAL, FDEF ; la source legacy) : on en porte les fonctions, pas le code. Un formulaire se publie par un lien à jeton (/f/<jeton>), seule surface de Partiduo ouverte sans authentification ; les réponses arrivent dans une boîte de réception, et un utilisateur authentifié décide : créer la fiche (par le contrat du cœur, avec ses droits), classer, rejeter. Rien n'entre d'office dans les fiches ni en comptabilité.
Spécification : ../partiduo-docs/adr/ADR-003-contrat-extensions.adoc (sort des extensions amont), avec ADR-001, ADR-002, ADR-005 et ADR-011. Décisions (D-FRM-*), inventaire porté / adapté / refusé et amendements proposés : link:DECISIONS.adoc[]. Référence du contrat : link:doc/api/form.adoc[].
== Fonctions
[cols="1,3",options="header"] |=== |Fonction |Dans FORM
|Formulaires |Titre, présentation, finalité, responsable du traitement, durée de conservation, catégorie de fiches visée, pièces jointes admises ; jusqu'à 30 champs typés (texte, texte long, courriel, téléphone, nombre décimal, date, case, liste de choix), cible facultative dans la fiche.
|Liens publics |Jeton de 256 bits montré une seule fois, conservé en empreinte ; expiration, révocation, usage unique ou nombre d'envois borné.
|Page publique |Limitation de débit par adresse et par lien, taille bornée, protection CSRF, en-têtes stricts sans script, champ piège, rappel de la finalité, du responsable, de la conservation et des droits.
|Boîte de réception |À traiter / toutes, compteur au menu et au tableau de bord ; fiche proposée, vérifiée puis créée par Partiduo::Api::Cards ; pièces versées au dossier par store_attachment ; classer, rejeter, effacer.
|Conservation |Purge des réponses échues à la lecture, à la demande et par manage form_purge. |===
== Organisation
[source]
src/ ├── partiduo-form.cr # point d'entrée du shard ├── partiduo-form/cli.cr # migrations et purge : require "partiduo-form/cli" └── forms/ # métier (application Marten « form ») ├── app.cr, manifest.cr # code FORM, permissions, menus ├── models/ # tables form_* ├── migrations/ # 0001 : tables et contraintes ├── services/ # jetons, contrôles, envois, traitement, purge (interne) ├── api/ # contrat public Forms::Api ├── commands/ # manage form_purge └── locales/ # fr, en, nl ui/ └── bulma/ # interface pour partiduo-ui-bulma (application « form_ui ») ├── bulma.cr # routes sous /ext/FORM/ et page publique /f/ ├── throttle.cr # limitation de débit de la page publique ├── handlers/, templates/forms/, assets/forms/, locales/
== Composer une distribution
[source,crystal]
require "partiduo-ui-bulma/partiduo_ui" require "partiduo-form" require "partiduo-form/ui/bulma"
installed_apps += Forms::INSTALLED_APPS + Forms::Ui::INSTALLED_APPS
ligne de commande : require "partiduo-form/cli"
L'extension ne dépend d'aucun module (fiches et pièces jointes sont du socle) ; elle s'active par dossier (Partiduo::Api::Modules.activate, écran « Modules »), y compris dans un dossier foyer.
À l'exploitation : planifier partiduo-manage form_purge chaque jour, et ne pas journaliser en clair les chemins /f/ au mandataire (le jeton est dans l'adresse ; DECISIONS A-FRM-4).
== Commandes
[source,sh]
cd prod-crystal/partiduo/partiduo-form SKIP_MARTEN_CLI_PRECOMPILATION=1 shards install createdb -h /tmp partiduo_test_ DATABASE_URL='postgres:///partiduo_test_?host=/tmp' crystal spec --order random crystal tool format src spec ui config scripts manage.cr && bin/ameba
== Version et licence
Numéro dans shard.yml seulement (constante Forms::VERSION lue à la compilation) ; chaque commit en incrémente le dernier chiffre. Licence AGPL-3.0-or-later (fichier LICENSE).
partiduo-form
- 0
- 0
- 0
- 1
- 1
- about 5 hours ago
- October 12, 2026
GNU Affero General Public License v3.0
Mon, 12 Oct 2026 13:37:52 GMT