Naar hoofdinhoud gaan

Configuratie

Elke Kazzle-app heeft een kazzle.config.ts in de projectroot. Dit bestand definieert wat je app bevat — componenten, skills en metadata.

Snel starten

import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
De defineConfig-helper biedt TypeScript-autocompletion en validatie. De types komen uit kazzle.types.ts, die automatisch wordt gegenereerd en in elk template is opgenomen.

Velden op het hoogste niveau

VeldTypeVerplichtBeschrijving
iconstringneePad naar het app-pictogrambestand relatief aan de repo-root (png, jpg, svg, webp, ico). Geüpload naar CDN bij publicatie.
componentsobject[]neeUitvoerbare componenten — UI-frontends of achtergrondprocessen
skillsobject[]neeAI-skilldefinities — markdown-bestanden die de AI leest voor domeinkennis
capabilitiesobjectneeOptionele desktop-integratiefeatures zoals sneltoetsen, meldingen en statusbalkpresentie

Componentvelden

Elk item in components[]:
VeldTypeVerplichtBeschrijving
namestringjaUnieke componentnaam binnen de app
type"ui" | "process"jaComponenttype — ui (max 1) of process
pathstringjaInvoerpad in de app-directory
runtimeobjectneeCommando’s: { dev?, build?, run? }
runtime.devstringneeCommando om de dev-server te starten (bijv. "bun run dev")
runtime.buildstringneeCommando om voor productie te bouwen (bijv. "vite build")
runtime.runstringneeCommando om in productie te starten (bijv. "bun run start")
schedulestringneeCron-schema voor procescomponenten (bijv. "*/5 * * * *")
trigger"webhook" | "event"neeTriggermodus voor procescomponenten
envobjectneeGeheimencollectie + omgeving voor omgevingsvariabele-injectie
env.collectionstringja (als env)Geheimencollectie-slug
env.environmentstringja (als env)Omgevings-slug
env.includestring[]neeAlleen deze omgevingsvariabele-namen injecteren. Indien weggelaten, alle uit de collectie+omgeving injecteren.

Skillvelden

Elk item in skills[]:
VeldTypeVerplichtBeschrijving
namestringjaSkillnaam
pathstringjaPad naar het SKILL.md-bestand relatief aan de app-root

Beperkingen

  • Max 1 UI-component per app
  • Component name-waarden moeten uniek zijn binnen de app

Templatevoorbeelden

ui-app

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** Pad naar het app-pictogram relatief aan de repo-root. Geüpload naar CDN bij publicatie. */
  icon: 'components/ui/public/favicon.svg',
  /** App-componenten — elk item definieert een inzetbare eenheid. Max 1 UI-component. */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});

process-app

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** Pad naar het app-pictogram relatief aan de repo-root. Geüpload naar CDN bij publicatie. */
  icon: 'icon.svg',
  /** App-componenten — elk item definieert een inzetbare eenheid. */
  components: [
    {
      name: 'My App',
      type: 'process',
      path: './components/process/index.ts',
      runtime: { dev: 'bun run dev', run: 'bun run start' },
      // Persistente processen zijn langlopende servers. Het platform plaatst
      // triggers in de draaiende server op elk trigger's `path` met
      // `Authorization: Bearer ${KAZZLE_TRIGGER_SECRET}`. Klantcode
      // valideert de header voordat werk wordt gedaan.
      processMode: 'persistent',
      triggers: [
        // Voorbeeld cron — uncomment en aanpassen. 5-veld, minuutresolutie.
        // { name: 'hourly-sync', kind: 'schedule', schedule: '0 * * * *', path: '/cron/hourly-sync' },
        // Voorbeeld webhook — POSTs naar /webhooks/{spaceId}/{appId}/My App/incoming
        // { name: 'incoming', kind: 'webhook', path: '/webhook/incoming' },
      ],
    },
  ],
});

lege app

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** Pad naar het app-pictogram relatief aan de repo-root. Geüpload naar CDN bij publicatie. */
  icon: 'icon.svg',
  /** App-componenten — elk item definieert een inzetbare eenheid. */
  components: [],
});