Конфігурація
Кожен додаток Kazzle маєkazzle.config.ts у корені проекту. Цей файл визначає, що містить ваш додаток — компоненти, навички та метадані.
Швидкий старт
import { defineConfig } from '@kazzle/app';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
defineConfig забезпечує автодоповнення та валідацію TypeScript. Типи походять з пакета @kazzle/app, включеного в кожен шаблон.
Поля верхнього рівня
| Поле | Тип | Обов’язкове | Опис |
|---|---|---|---|
name | string | ні | Маркетингова назва, показана в каталозі додатків. Повертається до слага, якщо опущено. |
subtitle | string | ні | Коротка однорядкова назва, показана під назвою додатка в каталозі (наприклад, “Control Mac apps from Kazzle”). Обов’язково для публікації — якщо опущено, публікація не вдасться. |
version | string | ні | Встановлена автором мітка версії (наприклад, “1.2.0”). Тільки для відображення; зберігається при публікації та показується на клонах як версія, з якої було розгалужено. |
icon | string | ні | Шлях до файлу значка додатка відносно кореня репозиторію (png, jpg, svg, webp, ico). Завантажується на CDN при публікації. |
accentColor | string | ні | Необов’язковий колір акценту бренду як шістнадцяткова строка (наприклад, “#3b82f6”). Тонує мікросхему значка додатка та деталь героя. Якщо опущено, акцент автоматично вибирається з значка. |
kazzleAuth | "optional" | "required" | ні | Контроль ідентичності для поверхні запуску додатка — “optional” (ідентичність надається, якщо присутній користувач Kazzle) або “required” (повинен бути авторизований користувач Kazzle для перегляду). |
launchUrl | string | ні | Буквальна абсолютна URL-адреса, відкрита всередині Kazzle при натисканні на додаток, використовується як є. Якщо опущено, поверхня запуску — це розгорнута URL-адреса попереду перегляду компонента UI. |
webhookUrl | string | ні | Кінцева точка видавця, на яку Kazzle надсилає POST при app.installed / app.uninstalled (доставляє ключ встановлення). |
components | object[] | ні | Виконувані компоненти — інтерфейси користувача або фонові процеси |
skills | object[] | ні | Визначення навичок ШІ — файли markdown, які ШІ читає для знань предметної області |
capabilities | object | ні | Необов’язкові функції інтеграції з робочим столом, такі як гарячі клавіші, сповіщення та присутність на панелі стану |
Поля компонента
Кожен запис уcomponents[]:
| Поле | Тип | Обов’язкове | Опис |
|---|---|---|---|
name | string | так | Унікальна назва компонента в межах додатка |
type | "ui" | "process" | так | Тип компонента — ui (макс. 1) або process |
path | string | так | Шлях входу в межах каталогу додатка |
runtime | object | ні | Команди та необов’язкові переозначення env: { dev?, prod? } |
runtime.dev.command | string | ні | Команда для запуску dev-сервера (наприклад, "bun run dev") |
runtime.dev.env | object | ні | Переозначення env тільки для розробки. Повертається до компонента env. |
runtime.prod.command | string | ні | Команда для запуску в production (наприклад, "bun run start") |
runtime.prod.build | string | ні | Команда для збірки для production (наприклад, "vite build") |
runtime.prod.env | object | ні | Переозначення env тільки для production. Повертається до компонента env. |
schedule | string | ні | Розклад Cron для компонентів процесу (наприклад, "*/5 * * * *") |
trigger | "webhook" | "event" | ні | Режим тригера для компонентів процесу |
env | object | ні | Колекція секретів + середовище для впровадження змінних env |
env.collection | string | так (якщо env) | Слаг колекції секретів |
env.environment | string | так (якщо env) | Слаг середовища |
env.include | string[] | ні | Впровадити тільки ці назви змінних env. Якщо опущено, впровадити все з колекції+середовища. |
Поля навички
Кожен запис уskills[]:
| Поле | Тип | Обов’язкове | Опис |
|---|---|---|---|
name | string | так | Назва навички |
path | string | так | Шлях до файлу SKILL.md відносно кореня додатка |
Обмеження
- Макс. 1 компонент UI на додаток
- Значення
nameкомпонента повинні бути унікальними в межах додатка
Приклади шаблонів
ai app
import { defineConfig } from '@kazzle/app';
export default defineConfig({
/** One-line catalog tagline. Required to publish. */
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({
/** One-line catalog tagline. Required to publish. */
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({
/** One-line catalog tagline. Required to publish. */
subtitle: 'My App',
/** Path to the app icon relative to the repo root. Uploaded to CDN on publish. */
icon: 'components/ui/public/favicon.svg',
/** App components — each entry defines a deployable unit. Max 1 UI component. */
components: [
{ name: 'My App', type: 'ui', path: './components/ui' },
],
});