Configurazione
Ogni app Kazzle ha un filekazzle.config.ts nella radice del progetto. Questo file definisce cosa contiene la tua app — componenti, skill e metadati.
Avvio rapido
import { defineConfig } from '@kazzle/app';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
defineConfig fornisce autocompletamento TypeScript e validazione. I tipi provengono dal pacchetto @kazzle/app incluso in ogni template.
Campi di primo livello
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
name | string | no | Nome di visualizzazione marketing mostrato nel catalogo app. Ritorna al slug se omesso. |
subtitle | string | no | Breve tagline su una riga mostrata sotto il nome dell’app nel catalogo (es. “Controlla app Mac da Kazzle”). Obbligatorio per pubblicare — se omesso la pubblicazione fallisce. |
version | string | no | Etichetta di versione impostata dall’autore (es. “1.2.0”). Solo per visualizzazione; acquisita al momento della pubblicazione e mostrata sui cloni come versione da cui è stato fatto il fork. |
icon | string | no | Percorso del file icona dell’app relativo alla radice del repo (png, jpg, svg, webp, ico). Caricato su CDN al momento della pubblicazione. |
accentColor | string | no | Colore di accento del brand opzionale come stringa esadecimale (es. “#3b82f6”). Tinta il chip icona app e l’hero dei dettagli. Se omesso, l’accento viene campionato automaticamente dall’icona. |
kazzleAuth | "optional" | "required" | no | Gating dell’identità per la superficie di lancio dell’app — “optional” (identità fornita se è presente un utente Kazzle) o “required” (deve essere un utente Kazzle connesso per visualizzare). |
launchUrl | string | no | URL assoluto letterale aperto dentro Kazzle quando l’app viene cliccata, usato così com’è. Se omesso, la superficie di lancio è l’URL di anteprima distribuito del componente UI. |
webhookUrl | string | no | Endpoint dell’editore a cui Kazzle invia POST su app.installed / app.uninstalled (consegna la chiave di installazione). |
components | object[] | no | Componenti eseguibili — frontend UI o processi in background |
skills | object[] | no | Definizioni di skill AI — file markdown che l’AI legge per la conoscenza del dominio |
capabilities | object | no | Funzionalità opzionali di integrazione desktop come hotkey, notifiche e presenza nella barra di stato |
Campi componente
Ogni voce incomponents[]:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
name | string | sì | Nome componente univoco all’interno dell’app |
type | "ui" | "process" | sì | Tipo di componente — ui (max 1) o process |
path | string | sì | Percorso di ingresso all’interno della directory app |
runtime | object | no | Comandi e override env opzionali: { dev?, prod? } |
runtime.dev.command | string | no | Comando per avviare il dev server (es. "bun run dev") |
runtime.dev.env | object | no | Override env solo per lo sviluppo. Ritorna al componente env. |
runtime.prod.command | string | no | Comando per avviare in produzione (es. "bun run start") |
runtime.prod.build | string | no | Comando per compilare per la produzione (es. "vite build") |
runtime.prod.env | object | no | Override env solo per la produzione. Ritorna al componente env. |
schedule | string | no | Schedule cron per componenti process (es. "*/5 * * * *") |
trigger | "webhook" | "event" | no | Modalità trigger per componenti process |
env | object | no | Raccolta secret + ambiente per l’iniezione di variabili env |
env.collection | string | sì (se env) | Slug della raccolta secret |
env.environment | string | sì (se env) | Slug dell’ambiente |
env.include | string[] | no | Inietta solo questi nomi di variabili env. Se omesso, inietta tutti dalla collection+environment. |
Campi skill
Ogni voce inskills[]:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
name | string | sì | Nome della skill |
path | string | sì | Percorso del file SKILL.md relativo alla radice dell’app |
Vincoli
- Max 1 componente UI per app
- I valori
namedel componente devono essere univoci all’interno dell’app
Esempi di template
ai app
import { defineConfig } from '@kazzle/app';
export default defineConfig({
/** Tagline catalogo su una riga. Obbligatorio per pubblicare. */
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({
/** Tagline catalogo su una riga. Obbligatorio per pubblicare. */
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({
/** Tagline catalogo su una riga. Obbligatorio per pubblicare. */
subtitle: 'My App',
/** Percorso dell'icona app relativo alla radice del repo. Caricato su CDN al momento della pubblicazione. */
icon: 'components/ui/public/favicon.svg',
/** Componenti app — ogni voce definisce un'unità distribuibile. Max 1 componente UI. */
components: [
{ name: 'My App', type: 'ui', path: './components/ui' },
],
});