Конфігурація
Кожен додаток 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 | ні | Коротка однорядкова характеристика, показана під назвою додатка в каталозі (наприклад, “Керуйте Mac-додатками з 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 (доставляє ключ встановлення). |
appLogin | boolean | ні | Вхід користувача для цього додатка (через @kazzle/app/auth — сьогодні Google). Відрізняється від kazzleAuth (гейтинг облікового запису Kazzle поверхні запуску); appLogin — це власні користувачі додатка, збережені в його власній базі даних. Вимагає процесу та бази даних. |
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({
/** Однорядкова характеристика каталогу. Обов'язково для публікації. */
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' } } },
],
});
login app
import { defineConfig } from '@kazzle/app';
export default defineConfig({
/** Однорядкова характеристика каталогу. Обов'язково для публікації. */
subtitle: 'My App',
icon: 'components/ui/public/favicon.svg',
/** Вхід користувача (Google через Kazzle). Користувачі живуть у власній базі даних цього додатка. */
appLogin: true,
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({
/** Однорядкова характеристика каталогу. Обов'язково для публікації. */
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' } } },
],
});