> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kazzle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Référence complète pour kazzle.config.ts — le manifeste de l'application.

# Configuration

Chaque application Kazzle possède un fichier `kazzle.config.ts` à la racine du projet. Ce fichier définit le contenu de votre application — composants, compétences et métadonnées.

## Démarrage rapide

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
```

L'assistant `defineConfig` fournit l'autocomplétion TypeScript et la validation. Les types proviennent du package `@kazzle/app` inclus dans chaque modèle.

## Champs de niveau supérieur

| Champ          | Type                         | Requis | Description                                                                                                                                                                                                                   |
| -------------- | ---------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`         | `string`                     | non    | Nom d'affichage marketing affiché dans le catalogue des applications. Revient au slug s'il est omis.                                                                                                                          |
| `subtitle`     | `string`                     | non    | Courte ligne de description affichée sous le nom de l'application dans le catalogue (ex. « Contrôlez les applications Mac depuis Kazzle »). Requis pour publier — l'omission entraîne l'échec de la publication.              |
| `version`      | `string`                     | non    | Étiquette de version définie par l'auteur (ex. « 1.2.0 »). Affichage uniquement ; capturée lors de la publication et affichée sur les clones comme version d'origine.                                                         |
| `icon`         | `string`                     | non    | Chemin du fichier icône de l'application relatif à la racine du dépôt (png, jpg, svg, webp, ico). Téléchargé sur CDN lors de la publication.                                                                                  |
| `accentColor`  | `string`                     | non    | Couleur d'accent de marque optionnelle sous forme de chaîne hexadécimale (ex. « #3b82f6 »). Teinte la puce d'icône de l'application et le héros détaillé. S'il est omis, l'accent est auto-échantillonné à partir de l'icône. |
| `kazzleAuth`   | `"optional"` \| `"required"` | non    | Contrôle d'identité pour la surface de lancement de l'application — « optional » (identité fournie si un utilisateur Kazzle est présent) ou « required » (doit être un utilisateur Kazzle connecté pour afficher).            |
| `launchUrl`    | `string`                     | non    | URL absolue littérale ouverte dans Kazzle lorsque l'application est cliquée, utilisée textuellement. S'il est omis, la surface de lancement est l'URL d'aperçu déployée du composant UI.                                      |
| `webhookUrl`   | `string`                     | non    | Point de terminaison de l'éditeur sur lequel Kazzle envoie une requête POST lors de app.installed / app.uninstalled (livre la clé d'installation).                                                                            |
| `components`   | object\[]                    | non    | Composants exécutables — interfaces utilisateur frontales ou processus d'arrière-plan                                                                                                                                         |
| `skills`       | object\[]                    | non    | Définitions de compétences IA — fichiers markdown que l'IA lit pour les connaissances du domaine                                                                                                                              |
| `capabilities` | `object`                     | non    | Fonctionnalités optionnelles d'intégration de bureau telles que les raccourcis clavier, les notifications et la présence dans la barre d'état                                                                                 |

## Champs des composants

Chaque entrée dans `components[]` :

| Champ                  | Type                     | Requis       | Description                                                                                                              |
| ---------------------- | ------------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| `name`                 | `string`                 | oui          | Nom de composant unique au sein de l'application                                                                         |
| `type`                 | `"ui"` \| `"process"`    | oui          | Type de composant — ui (max 1) ou process                                                                                |
| `path`                 | `string`                 | oui          | Chemin d'entrée dans le répertoire de l'application                                                                      |
| `runtime`              | object                   | non          | Commandes et remplacements env optionnels : `{ dev?, prod? }`                                                            |
| `runtime.dev.command`  | `string`                 | non          | Commande pour démarrer le serveur de développement (ex. `"bun run dev"`)                                                 |
| `runtime.dev.env`      | object                   | non          | Remplacement env de développement uniquement. Revient à `env` du composant.                                              |
| `runtime.prod.command` | `string`                 | non          | Commande à démarrer en production (ex. `"bun run start"`)                                                                |
| `runtime.prod.build`   | `string`                 | non          | Commande pour construire pour la production (ex. `"vite build"`)                                                         |
| `runtime.prod.env`     | object                   | non          | Remplacement env de production uniquement. Revient à `env` du composant.                                                 |
| `schedule`             | `string`                 | non          | Calendrier cron pour les composants de processus (ex. `"*/5 * * * *"`)                                                   |
| `trigger`              | `"webhook"` \| `"event"` | non          | Mode de déclenchement pour les composants de processus                                                                   |
| `env`                  | object                   | non          | Collection de secrets + environnement pour l'injection de variables env                                                  |
| `env.collection`       | `string`                 | oui (si env) | Slug de collection de secrets                                                                                            |
| `env.environment`      | `string`                 | oui (si env) | Slug d'environnement                                                                                                     |
| `env.include`          | `string[]`               | non          | Injecter uniquement ces noms de variables env. S'il est omis, injecter tous les éléments de la collection+environnement. |

## Champs des compétences

Chaque entrée dans `skills[]` :

| Champ  | Type     | Requis | Description                                                     |
| ------ | -------- | ------ | --------------------------------------------------------------- |
| `name` | `string` | oui    | Nom de la compétence                                            |
| `path` | `string` | oui    | Chemin du fichier SKILL.md relatif à la racine de l'application |

## Contraintes

* **Max 1 composant UI** par application
* Les valeurs `name` des composants doivent être uniques au sein de l'application

## Exemples de modèles

### ai app

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  /** Ligne de description du catalogue. Requis pour publier. */
  subtitle: 'My App',
  icon: 'components/ui/public/favicon.svg',
  components: [
    { name: 'ui', type: 'ui', path: './components/ui' },
    { name: 'server', type: 'process', path: './components/server/index.ts', runtime: { dev: { command: 'bun run dev' }, prod: { command: 'bun run start' } } },
  ],
});
```

### ui db app

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  /** Ligne de description du catalogue. Requis pour publier. */
  subtitle: 'My App',
  icon: 'components/ui/public/favicon.svg',
  components: [
    { name: 'ui', type: 'ui', path: './components/ui' },
    { name: 'server', type: 'process', path: './components/server/index.ts', runtime: { dev: { command: 'bun run dev' }, prod: { command: 'bun run start' } } },
  ],
});
```

### ui app

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  /** Ligne de description du catalogue. Requis pour publier. */
  subtitle: 'My App',
  /** Chemin de l'icône de l'application relatif à la racine du dépôt. Téléchargé sur CDN lors de la publication. */
  icon: 'components/ui/public/favicon.svg',
  /** Composants de l'application — chaque entrée définit une unité déployable. Max 1 composant UI. */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});
```
