Skip to content

Fonctionnalités incluses et cible Vueform Builder

Cette page sert de référentiel fonctionnel pour piloter l’évolution de QForm Builder face à Vueform Builder.

Objectif produit : faire évoluer QForm Builder pour proposer, au minimum, les mêmes familles d’options que Vueform Builder, tout en restant aligné avec notre stack : Nuxt 4 layer, Vue 3, Quasar 2, Pinia, FormKit, puis intégration naturelle dans NFZ Studio.

Lecture des statuts

StatutSignification
✅ InclusFonction déjà disponible et utilisable.
🟡 PartielFonction présente, mais à stabiliser, exposer ou enrichir.
🔴 À développerFonction absente ou non exposée publiquement.
🎯 CibleFonction à viser pour atteindre ou dépasser la parité Vueform Builder.

Résumé des fonctionnalités actuelles

FormBuilder

FormBuilder est le composant d’édition principal. Il embarque l’interface complète du constructeur.

Fonctions actuellement incluses :

FonctionStatutNotes
Intégration comme composant Nuxt/VueUtilisable dans une app Nuxt 4 via layer extends.
Interface builder autonomeQLayout, toolbar, drawer gauche, drawer droit, canvas.
Drag-and-drop de champsAjout de champs depuis le catalogue vers le canvas.
Catalogue de champs🟡Catalogue interne : inputs, checkbox, select, dates, fichiers, boutons, statiques, stepper. À exposer via API publique.
Édition des propriétésPanneau droit avec cartes de configuration par type.
Validation🟡Gestion FormKit existante, UI à compléter pour couvrir davantage de règles.
Conditions d’affichage / logique🟡Panneau ConditionsCard, opérateurs de base, logique à étendre et documenter.
Étapes / pages🟡Structure q-stepper présente. À renforcer pour couvrir la notion de pages avancées.
ArborescenceOnglet Arborescence basé sur QTree, avec sélection champ/step.
Aperçu / éditionMode editing et previewing.
Prévisualisation responsive🟡Viewports default, sm, lg. À transformer en vrais presets device.
Historique undo/redoStore d’historique isolé par instance.
Multi-instancebuilder-id isole store, historique, autosave et état local.
Autosave localSauvegarde locale isolée par builder-id ou storage-key.
Export de schémaAPI publique exportSchema(), événement schema-export. UI export dédiée à enrichir.
Import de schémaAPI publique importSchema(), événement schema-import. UI import dédiée à enrichir.
Sauvegarde externeÉvénement @save avec payload complet. Adaptable à Feathers/NFZ.
API publique via refsave, reset, setSchema, getSchema, setValues, getValues, setSettings, getSettings.
Personnalisation des libellés🟡Prop labels. À compléter vers un vrai système i18n/locales.
Personnalisation thème/UI🟡Hérite de Quasar. À compléter par un thème builder / design tokens.
Custom elements🔴Aujourd’hui possible par modification interne du catalogue, mais pas encore par API publique.
Custom config panels🔴Cartes internes existantes, mais pas encore de registre public.
Export code Vue natif🔴Non inclus. Option à évaluer après stabilisation JSON/runtime.
AI form generation🔴Non inclus. Cible possible via NFZ Studio/Agents.

FormViewer

FormViewer est le composant runtime destiné à rejouer un formulaire déjà construit.

FonctionStatutNotes
Rendu dynamique depuis schémaRend un schéma FormKit/Quasar.
v-model des valeursLe parent contrôle les données saisies.
SoumissionÉvénement @submit.
Lecture seuleProp readonly.
Réutilisation dans app externeCompatible layer Nuxt.
Rendu sans builderPermet de sauvegarder un schéma en base puis le rejouer.
Rendu SSR🔴Le projet reste configuré ssr:false. À sécuriser si SSR nécessaire.

Comparaison fonctionnelle cible avec Vueform Builder

Vueform Builder met notamment en avant : intégration dans une application comme composant, drag-and-drop, export JSON, sauvegarde en base, rendu runtime via SDK, pages, conditions, tree, devices, validation, history, theming et i18n. Il documente aussi l’extension par custom elements et custom config panels.

FamilleVueform BuilderQForm Builder actuelCible QForm Builder
Builder no-code intégréComposant intégrable dans une app VueGarder layer Nuxt + composant public.
Drag-and-dropBuilder drag-and-drop completAméliorer feedback visuel et drop zones imbriquées.
Export JSONExport / sauvegarde JSONAjouter UI export/import claire dans toolbar ou panel export.
Sauvegarde en baseVia events/API côté app hôteAjouter exemples NFZ forms service + CRUD.
Runtime rendererRendu depuis JSON sauvegardéStabiliser FormViewer et documenter les contraintes.
Pages / StepsGestion avancée des pages🟡Renforcer q-stepper, duplication, réordonnancement, validation par étape.
ConditionsConditions avancées🟡Étendre opérateurs, conditions groupées AND/OR, UX de test.
Tree / structureArborescence de formulaireAjouter actions depuis l’arbre : déplacer, dupliquer, supprimer.
DevicesPrévisualisation par device🟡Ajouter presets mobile/tablet/desktop + largeur personnalisée.
ValidationRègles configurables🟡Étendre règles UI : required, email, regex, min/max, length, custom.
HistoryUndo/redoAjouter historique visible et raccourcis clavier.
ThemingThème et UI personnalisables🟡Ajouter design tokens, palettes, preview thème, presets dark/light.
I18n / localesLocalisation builder et formulaire🟡Remplacer/compléter labels par registre de locales.
Element list customizationCatégories et éléments configurables🔴Ajouter prop catalog + registry typé.
Custom elementsExtension d’éléments🔴Ajouter defineQFormElement() et rendu dynamique.
Custom config panelsPanneaux de config extensibles🔴Ajouter registry configPanels par type.
PresetsConfigurations prédéfinies🔴Ajouter presets de builder : simple, survey, admin CRUD, onboarding.
Style panelPanneau style avancé🔴Ajouter onglet style : classes, couleurs, tailles, densité, variant.
Export panelPanneau export dédié🔴Ajouter export JSON, export TS, export Vue, copier/coller.
Form code exportExport composant Vue natif🔴Cible optionnelle après parité JSON/runtime.
AIGénération assistée🔴Cible NFZ Studio : prompt → schéma → preview → apply.
White label / self-hostedIntégration produit, données self-hostedAvantage naturel : source maîtrisée, pas de télémétrie imposée.

Détail du catalogue actuellement inclus

Champs interactifs

ÉlémentType schémaStatut
Champ texteq-input, inputType: text
Champ numériqueq-input, inputType: number
Adresse e-mailq-input, inputType: email
Téléphone masquéq-input, masque
Zone de texteq-input, inputType: textarea
Case à cocherq-checkbox
Selectq-select
Dateq-date
Dates multiplesq-date-multiple
Plage de datesq-date-range
Upload fichierq-input, inputType: file
Upload multi-fichiersq-input, multiple, inputType: file

Éléments statiques

ÉlémentType schémaStatut
Bouton submitq-btn, type: submit
Bouton principalq-btn, color: primary
Bouton secondaireq-btn, color: secondary
Bouton dangerq-btn, color: negative
Séparateur$el: hr
Titre H1$el: h1
Titre H2$el: h2
Titre H3$el: h3
Titre H4$el: h4
Paragraphe$el: p
Citation$el: blockquote

Structures

ÉlémentType schémaStatut
Étapesq-stepper🟡

Options configurables déjà présentes

Les panneaux de configuration actuels couvrent déjà plusieurs familles d’options :

FamilleFichiers liésStatut
Propriétés généralesPropertiesCard.vue
Attributs HTML/FormKitAttributesCard.vue
Données / optionsDataCard.vue, OptionsCard.vue
ValidationValidationCard.vue🟡
ConditionsConditionsCard.vue🟡
Layout / colonnesLayoutCard.vue
Options boutonButtonOptionsCard.vue
Options checkboxCheckboxOptionsCard.vue
Options dateDateOptionsCard.vue
Options fichierFileOptionsCard.vue
Options stepperQStepperConfig.vue🟡

Roadmap de parité minimale

Phase 1 — Stabiliser le contrat public

Objectif : rendre toutes les fonctionnalités existantes consommables par une application externe sans modifier les fichiers internes.

À faire :

  1. Ajouter une prop catalog pour injecter des éléments personnalisés.
  2. Ajouter un type public QFormBuilderElementDefinition.
  3. Ajouter un registre public des panneaux de config par type.
  4. Ajouter un panneau Export officiel : JSON, copie presse-papiers, téléchargement.
  5. Ajouter un panneau Import officiel : JSON, fichier, validation du schéma.
  6. Documenter un service NFZ forms pour sauvegarder/charger les schémas.

Phase 2 — Atteindre le socle Vueform Builder

Objectif : couvrir les familles visibles dans Vueform Builder : pages, conditions, tree, devices, validation, history, theming, i18n.

À faire :

  1. Renforcer les steps/pages : réordonnancement, duplication, suppression, validation par étape.
  2. Étendre les conditions : groupes AND/OR, opérateurs date/texte/nombre, preview de résultat.
  3. Améliorer l’arborescence : actions contextuelles, drag depuis tree, recherche.
  4. Ajouter des devices : mobile, tablet, desktop, custom width.
  5. Étendre la validation : règles prédéfinies + messages + règles custom.
  6. Ajouter un panneau history visible et raccourcis clavier.
  7. Ajouter un vrai système de locales.
  8. Ajouter un panneau style/thème compatible Quasar.

Phase 3 — Dépasser Vueform Builder dans l’écosystème NFZ

Objectif : tirer parti de Nuxt 4, Quasar, Feathers/NFZ et des agents IA.

À faire :

  1. Génération de formulaire depuis un service NFZ ou un schéma Zod.
  2. Mapping automatique Zod schemaFormBuilder schema.
  3. Mapping FormBuilder schema → service CRUD NFZ.
  4. Agent IA : prompt métier → formulaire complet → validation → service NFZ.
  5. Templates métier : formulaire agent public, formulaire RH, formulaire incident cyber, formulaire CRUD admin.
  6. Version headless pour intégrer le canvas dans un dashboard déjà structuré.

Critère de réussite

QForm Builder atteint la parité minimale lorsque l’on peut :

  1. intégrer le builder dans une app Nuxt 4 comme un simple composant ;
  2. créer un formulaire complet sans code ;
  3. gérer champs, pages, conditions, validation, responsive preview et historique ;
  4. personnaliser le catalogue et les panneaux ;
  5. sauvegarder le JSON en base ;
  6. rejouer le formulaire avec FormViewer ;
  7. brancher le cycle complet sur NFZ Studio sans couplage direct aux pages.

QForm Builder — couche Nuxt 4 / Quasar / FormKit réutilisable.