Konfiguration
Jede Kazzle-App hat einekazzle.config.ts im Projektstamm. Diese Datei definiert, was deine App enthält — Komponenten, Skills und Metadaten.
Schnelleinstieg
import { defineConfig } from '@kazzle/app';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
defineConfig-Helper bietet TypeScript-Autovervollständigung und Validierung. Die Typen stammen aus dem @kazzle/app-Paket, das in jeder Vorlage enthalten ist.
Felder auf oberster Ebene
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | nein | Marketing-Anzeigename, der im App-Katalog angezeigt wird. Fällt auf den Slug zurück, wenn weggelassen. |
subtitle | string | nein | Kurzes einzeiliges Tagline unter dem App-Namen im Katalog (z. B. „Mac-Apps von Kazzle aus steuern”). Erforderlich zum Veröffentlichen — Weglassen führt zu Fehler. |
version | string | nein | Von Autor festgelegte Versionskennzeichnung (z. B. „1.2.0”). Nur zur Anzeige; wird beim Veröffentlichen gespeichert und bei Klonen als Fork-Quellversion angezeigt. |
icon | string | nein | Pfad zur App-Symboldatei relativ zum Repo-Stamm (png, jpg, svg, webp, ico). Wird beim Veröffentlichen ins CDN hochgeladen. |
accentColor | string | nein | Optionale Brand-Akzentfarbe als Hex-String (z. B. „#3b82f6”). Färbt das App-Symbol-Chip und den Detail-Hero. Wenn weggelassen, wird der Akzent automatisch aus dem Symbol entnommen. |
kazzleAuth | "optional" | "required" | nein | Identitätsgating für die App-Startoberfläche — „optional” (Identität bereitgestellt, wenn ein Kazzle-Benutzer vorhanden ist) oder „required” (muss ein angemeldeter Kazzle-Benutzer sein, um zu sehen). |
launchUrl | string | nein | Absolute URL, die in Kazzle geöffnet wird, wenn auf die App geklickt wird, wörtlich verwendet. Wenn weggelassen, ist die Startoberfläche die bereitgestellte Vorschau-URL der UI-Komponente. |
webhookUrl | string | nein | Publisher-Endpunkt, an den Kazzle bei app.installed / app.uninstalled POSTet (liefert den Installationsschlüssel). |
components | object[] | nein | Ausführbare Komponenten — UI-Frontends oder Hintergrundprozesse |
skills | object[] | nein | KI-Skill-Definitionen — Markdown-Dateien, die die KI für Domänenwissen liest |
capabilities | object | nein | Optionale Desktop-Integrationsfunktionen wie Hotkeys, Benachrichtigungen und Statusleisten-Präsenz |
Komponentenfelder
Jeder Eintrag incomponents[]:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | ja | Eindeutiger Komponentenname innerhalb der App |
type | "ui" | "process" | ja | Komponententyp — ui (max. 1) oder process |
path | string | ja | Einstiegspfad im App-Verzeichnis |
runtime | object | nein | Befehle und optionale Env-Overrides: { dev?, prod? } |
runtime.dev.command | string | nein | Befehl zum Starten des Dev-Servers (z. B. "bun run dev") |
runtime.dev.env | object | nein | Nur Dev-Env-Override. Fällt auf Komponenten-env zurück. |
runtime.prod.command | string | nein | Befehl zum Starten in der Produktion (z. B. "bun run start") |
runtime.prod.build | string | nein | Befehl zum Bauen für die Produktion (z. B. "vite build") |
runtime.prod.env | object | nein | Nur Produktions-Env-Override. Fällt auf Komponenten-env zurück. |
schedule | string | nein | Cron-Zeitplan für Process-Komponenten (z. B. "*/5 * * * *") |
trigger | "webhook" | "event" | nein | Trigger-Modus für Process-Komponenten |
env | object | nein | Geheime Sammlung + Umgebung für Env-Var-Injektion |
env.collection | string | ja (wenn env) | Slug der geheimen Sammlung |
env.environment | string | ja (wenn env) | Umgebungs-Slug |
env.include | string[] | nein | Nur diese Env-Var-Namen injizieren. Wenn weggelassen, alle aus der Sammlung+Umgebung injizieren. |
Skill-Felder
Jeder Eintrag inskills[]:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | ja | Skill-Name |
path | string | ja | Pfad zur SKILL.md-Datei relativ zum App-Stamm |
Einschränkungen
- Max. 1 UI-Komponente pro App
- Komponentennamen-Werte müssen innerhalb der App eindeutig sein
Vorlagenbeispiele
ai app
import { defineConfig } from '@kazzle/app';
export default defineConfig({
/** Einzeiliges Katalog-Tagline. Erforderlich zum Veröffentlichen. */
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({
/** Einzeiliges Katalog-Tagline. Erforderlich zum Veröffentlichen. */
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({
/** Einzeiliges Katalog-Tagline. Erforderlich zum Veröffentlichen. */
subtitle: 'My App',
/** Pfad zum App-Symbol relativ zum Repo-Stamm. Wird beim Veröffentlichen ins CDN hochgeladen. */
icon: 'components/ui/public/favicon.svg',
/** App-Komponenten — jeder Eintrag definiert eine bereitstellbare Einheit. Max. 1 UI-Komponente. */
components: [
{ name: 'My App', type: 'ui', path: './components/ui' },
],
});