Configuration
Chaque application Kazzle possède un fichierkazzle.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
import { defineConfig } from '@kazzle/app';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
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 danscomponents[] :
| 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 dansskills[] :
| 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
namedes composants doivent être uniques au sein de l’application
Exemples de modèles
ai app
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
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
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' },
],
});