> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kazzle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Konfigurasi

> Referensi lengkap untuk kazzle.config.ts — manifes aplikasi.

# Konfigurasi

Setiap aplikasi Kazzle memiliki `kazzle.config.ts` di akar proyek. File ini mendefinisikan apa yang berisi aplikasi Anda — komponen, skill, dan metadata.

## Mulai cepat

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
```

Helper `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 dalam `components[]`:

| 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 dalam `skills[]`:

| 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 `name` komponen harus unik dalam aplikasi

## Contoh template

### ai app

```typescript theme={"theme":"material-theme-darker"}
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

```typescript theme={"theme":"material-theme-darker"}
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

```typescript theme={"theme":"material-theme-darker"}
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' },
  ],
});
```
