# Premiers pas

Formerie reçoit les soumissions de formulaires, valide les valeurs soumises,
enregistre la soumission et effectue la livraison selon une configuration gérée
côté serveur.

Les clients navigateur soumettent seulement les valeurs des champs, les jetons de
vérification humaine lorsqu’ils sont requis et des métadonnées sûres
provenant de votre site, comme l’URL de la page ou une clé d’idempotence. Ils ne soumettent jamais
de destinataires, d’identifiants de fournisseurs, de noms de fournisseurs, de
gabarits de courriel, de règles de livraison ni de règles de validation côté
serveur.

## Installer le client

Utilisez le paquet client si vous voulez des fonctions utilitaires pour les URL de
l’environnement d’exécution, le chargement du schéma public, la validation, l’état
de la soumission et l’amélioration progressive.

npm:

```sh
npm install @formerie/client
```

pnpm:

```sh
pnpm add @formerie/client
```

Yarn:

```sh
yarn add @formerie/client
```

Bun:

```sh
bun add @formerie/client
```

## Soumettre un formulaire

```ts
import { FormerieRuntimeClient } from "@formerie/client";

const forms = new FormerieRuntimeClient();

const result = await forms.submit("example.com", "contact", {
  fields: {
    name: "Jane Example",
    email: "jane@example.com",
    message: "Hello"
  },
  verificationToken: captchaToken,
  metadata: {
    pageUrl: window.location.href
  }
});

if (result.ok) {
  console.log(result.submissionId);
}
```

Le point de terminaison par défaut de l’environnement d’exécution est
`https://forms.formerie.com`. Il utilise des routes épurées comme
`/example/contact/submit`.

## Noms d’hôte de l’environnement d’exécution

Les noms d’hôte liés à un espace de travail gardent l’identifiant du formulaire
dans le chemin :

```ts
const forms = new FormerieRuntimeClient({
  endpoint: "https://forms.example.com"
});

await forms.submitWorkspace("contact", {
  fields,
  verificationToken: captchaToken
});
```

Les noms d’hôte liés à un formulaire ciblent directement ce formulaire :

```ts
const contact = new FormerieRuntimeClient({
  endpoint: "https://contact.example.com"
});

await contact.submitForm({
  fields,
  verificationToken: captchaToken
});
```

## Pages hébergées et intégrations

Les formulaires hébergés, les intégrations, les routes brutes de l’environnement
d’exécution et les fonctions utilitaires du SDK reposent tous sur le même contrat
de schéma public, de validation, de soumission et d’erreurs. La livraison reste
configurée côté serveur; le code client n’envoie jamais de destinataires, de
gabarits, d’identifiants de fournisseurs ni de règles d’acheminement non publiques.
