Konfigurasi
Setiap aplikasi Kazzle memilikikazzle.config.ts di akar proyek. File ini mendefinisikan apa yang berisi aplikasi Anda — komponen, skill, dan metadata.
Mulai cepat
import { defineConfig } from '@kazzle/app';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
defineConfig menyediakan pelengkapan otomatis TypeScript dan validasi. Tipe berasal dari paket @kazzle/app yang disertakan di setiap template.
Bidang tingkat atas
| Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
name | string | tidak | Nama tampilan pemasaran yang ditampilkan di katalog aplikasi. Kembali ke slug jika dihilangkan. |
subtitle | string | tidak | Tagline satu baris pendek yang ditampilkan di bawah nama aplikasi di katalog (mis. “Kontrol aplikasi Mac dari Kazzle”). Wajib untuk menerbitkan — jika dihilangkan, penerbitan gagal. |
version | string | tidak | Label versi yang ditetapkan penulis (mis. “1.2.0”). Hanya tampilan; difoto saat diterbitkan dan ditampilkan pada klon sebagai versi yang di-fork dari. |
icon | string | tidak | Jalur ke file ikon aplikasi relatif terhadap akar repo (png, jpg, svg, webp, ico). Diunggah ke CDN saat diterbitkan. |
accentColor | string | tidak | Warna aksen merek opsional sebagai string heksadesimal (mis. “#3b82f6”). Mewarnai chip ikon aplikasi dan hero detail. Jika dihilangkan, aksen diambil sampel otomatis dari ikon. |
kazzleAuth | "optional" | "required" | tidak | Gating identitas untuk permukaan peluncuran aplikasi — “optional” (identitas disediakan jika pengguna Kazzle ada) atau “required” (harus pengguna Kazzle yang masuk untuk melihat). |
launchUrl | string | tidak | URL absolut literal yang dibuka di dalam Kazzle saat aplikasi diklik, digunakan verbatim. Jika dihilangkan, permukaan peluncuran adalah URL pratinjau yang disebarkan dari komponen UI. |
webhookUrl | string | tidak | Titik akhir penerbit Kazzle POST pada app.installed / app.uninstalled (mengirimkan kunci instalasi). |
components | object[] | tidak | Komponen yang dapat dieksekusi — frontend UI atau proses latar belakang |
skills | object[] | tidak | Definisi skill AI — file markdown yang dibaca AI untuk pengetahuan domain |
capabilities | object | tidak | Fitur integrasi desktop opsional seperti hotkey, notifikasi, dan kehadiran bilah status |
Bidang komponen
Setiap entri dalamcomponents[]:
| Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
name | string | ya | Nama komponen unik dalam aplikasi |
type | "ui" | "process" | ya | Tipe komponen — ui (maks 1) atau process |
path | string | ya | Jalur masuk dalam direktori aplikasi |
runtime | object | tidak | Perintah dan penggantian env opsional: { dev?, prod? } |
runtime.dev.command | string | tidak | Perintah untuk memulai server dev (mis. "bun run dev") |
runtime.dev.env | object | tidak | Penggantian env khusus dev. Kembali ke komponen env. |
runtime.prod.command | string | tidak | Perintah untuk memulai dalam produksi (mis. "bun run start") |
runtime.prod.build | string | tidak | Perintah untuk membangun untuk produksi (mis. "vite build") |
runtime.prod.env | object | tidak | Penggantian env khusus produksi. Kembali ke komponen env. |
schedule | string | tidak | Jadwal cron untuk komponen proses (mis. "*/5 * * * *") |
trigger | "webhook" | "event" | tidak | Mode pemicu untuk komponen proses |
env | object | tidak | Koleksi rahasia + lingkungan untuk injeksi var env |
env.collection | string | ya (jika env) | Slug koleksi rahasia |
env.environment | string | ya (jika env) | Slug lingkungan |
env.include | string[] | tidak | Hanya injeksi nama var env ini. Jika dihilangkan, injeksi semua dari koleksi+lingkungan. |
Bidang skill
Setiap entri dalamskills[]:
| Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
name | string | ya | Nama skill |
path | string | ya | Jalur ke file SKILL.md relatif terhadap akar aplikasi |
Batasan
- Maks 1 komponen UI per aplikasi
- Nilai
namekomponen harus unik dalam aplikasi
Contoh template
ai app
import { defineConfig } from '@kazzle/app';
export default defineConfig({
/** Tagline katalog satu baris. Wajib untuk menerbitkan. */
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 katalog satu baris. Wajib untuk menerbitkan. */
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 katalog satu baris. Wajib untuk menerbitkan. */
subtitle: 'My App',
/** Jalur ke ikon aplikasi relatif terhadap akar repo. Diunggah ke CDN saat diterbitkan. */
icon: 'components/ui/public/favicon.svg',
/** Komponen aplikasi — setiap entri mendefinisikan unit yang dapat disebarkan. Maks 1 komponen UI. */
components: [
{ name: 'My App', type: 'ui', path: './components/ui' },
],
});