# Code : interfaces et modèles de données

Source : https://docs.berkios.online/code/interfaces-et-modeles/ · Section : Code (.bk) · Documentation officielle BERKIOS (https://docs.berkios.online)


Cet exemple décrit une petite gestion de stock : un **modèle** (la forme des données), une interface avec un tableau, et un formulaire modal.

```text
langue français

application "Gestion de stock"
  version 1.0
  description "Suivi simple des produits"
  type interface
  plateformes windows, macos, linux, android
  édition pro

modèle Produit
  sku : texte, unique, obligatoire
  nom : texte, obligatoire
  quantité : nombre entier, minimum 0
  prix : montant

interface Accueil
  titre "Produits en stock"
  taille 1280 sur 720
  fond #f8fafc

  panneau en-tête
    disposition ligne
    étiquette titre "Produits en stock"
      taille du texte 26
      gras
    bouton ajouter "Ajouter un produit"
      quand on clique : ouvrir Formulaire produit

  tableau liste
    source : Produit
    colonnes : sku, nom, quantité, prix

interface Formulaire produit
  affichage modale
  titre "Nouveau produit"

  champ sku "Référence"
    obligatoire
  champ nom "Nom du produit"
    obligatoire
  champ quantité "Quantité"
    format nombre
    minimum 0
  bouton enregistrer "Enregistrer"
    quand on clique : envoyer le formulaire
  bouton annuler "Annuler"
    quand on clique : fermer
```

## Comment ça marche

- Le **modèle** déclare les champs et leurs règles : `obligatoire`, `unique`, `minimum`, types (`texte`, `nombre entier`, `montant`…).
- Le **tableau** se lie au modèle avec `source : Produit`.
- Un formulaire **valide** la ligne selon le modèle (obligatoire, minimum, unicité) avant de l'ajouter au tableau.
- `quand on clique : ouvrir …` change d'interface ; `fermer` revient en arrière.

## Actions disponibles dans l'aperçu

Ouvrir / fermer une interface, afficher un message, montrer / cacher / basculer un composant, envoyer ou vider le formulaire, appeler une API.

## Limites à connaître

- Dans l'aperçu navigateur, les données restent dans le navigateur (`localStorage`). Le bouton « Réinitialiser les données » les efface. Ce n'est pas la persistance SQLite des applications générées.
- Les actions Excel ne fonctionnent pas dans un navigateur.
- Le rendu n'est pas garanti identique à celui de Flutter : testez toujours l'application générée.
