Cấu hình
Mỗi ứng dụng Kazzle có mộtkazzle.config.ts ở thư mục gốc dự án. Tệp này định nghĩa những gì ứng dụng của bạn chứa — các thành phần, kỹ năng và siêu dữ liệu.
Bắt đầu nhanh
import { defineConfig } from '@kazzle/app';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
defineConfig cung cấp tự động hoàn thành TypeScript và xác thực. Các kiểu dữ liệu đến từ gói @kazzle/app được bao gồm trong mọi mẫu.
Các trường cấp cao nhất
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
name | string | không | Tên hiển thị tiếp thị được hiển thị trong danh mục ứng dụng. Quay lại slug khi bị bỏ qua. |
subtitle | string | không | Dòng tagline ngắn được hiển thị dưới tên ứng dụng trong danh mục (ví dụ: “Điều khiển ứng dụng Mac từ Kazzle”). Bắt buộc để xuất bản — bỏ qua và xuất bản sẽ thất bại. |
version | string | không | Nhãn phiên bản do tác giả đặt (ví dụ: “1.2.0”). Chỉ hiển thị; được chụp nhanh khi xuất bản và hiển thị trên bản sao dưới dạng phiên bản được fork từ. |
icon | string | không | Đường dẫn đến tệp biểu tượng ứng dụng tương đối với thư mục gốc kho lưu trữ (png, jpg, svg, webp, ico). Được tải lên CDN khi xuất bản. |
accentColor | string | không | Màu nhấn thương hiệu tùy chọn dưới dạng chuỗi hex (ví dụ: “#3b82f6”). Tô màu chip biểu tượng ứng dụng và hero chi tiết. Khi bị bỏ qua, màu nhấn được lấy mẫu tự động từ biểu tượng. |
kazzleAuth | "optional" | "required" | không | Cổng nhận dạng cho bề mặt khởi chạy ứng dụng — “optional” (nhận dạng được cung cấp nếu có người dùng Kazzle) hoặc “required” (phải là người dùng Kazzle đã đăng nhập để xem). |
launchUrl | string | không | URL tuyệt đối theo nghĩa đen được mở bên trong Kazzle khi ứng dụng được nhấp, được sử dụng nguyên văn. Khi bị bỏ qua, bề mặt khởi chạy là URL xem trước được triển khai của thành phần UI. |
webhookUrl | string | không | Điểm cuối nhà xuất bản Kazzle POSTs trên app.installed / app.uninstalled (cung cấp khóa cài đặt). |
components | object[] | không | Các thành phần có thể thực thi — giao diện người dùng hoặc quy trình nền |
skills | object[] | không | Định nghĩa kỹ năng AI — các tệp markdown mà AI đọc để có kiến thức miền |
capabilities | object | không | Các tính năng tích hợp máy tính để bàn tùy chọn như phím tắt, thông báo và sự hiện diện thanh trạng thái |
Các trường thành phần
Mỗi mục trongcomponents[]:
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
name | string | có | Tên thành phần duy nhất trong ứng dụng |
type | "ui" | "process" | có | Loại thành phần — ui (tối đa 1) hoặc process |
path | string | có | Đường dẫn mục nhập trong thư mục ứng dụng |
runtime | object | không | Lệnh và ghi đè env tùy chọn: { dev?, prod? } |
runtime.dev.command | string | không | Lệnh để bắt đầu máy chủ dev (ví dụ: "bun run dev") |
runtime.dev.env | object | không | Ghi đè env chỉ dành cho dev. Quay lại thành phần env. |
runtime.prod.command | string | không | Lệnh để bắt đầu trong sản xuất (ví dụ: "bun run start") |
runtime.prod.build | string | không | Lệnh để xây dựng cho sản xuất (ví dụ: "vite build") |
runtime.prod.env | object | không | Ghi đè env chỉ dành cho sản xuất. Quay lại thành phần env. |
schedule | string | không | Lịch trình cron cho các thành phần quy trình (ví dụ: "*/5 * * * *") |
trigger | "webhook" | "event" | không | Chế độ kích hoạt cho các thành phần quy trình |
env | object | không | Bộ sưu tập bí mật + môi trường để tiêm biến env |
env.collection | string | có (nếu env) | Slug bộ sưu tập bí mật |
env.environment | string | có (nếu env) | Slug môi trường |
env.include | string[] | không | Chỉ tiêm các tên biến env này. Nếu bị bỏ qua, tiêm tất cả từ bộ sưu tập + môi trường. |
Các trường kỹ năng
Mỗi mục trongskills[]:
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
name | string | có | Tên kỹ năng |
path | string | có | Đường dẫn đến tệp SKILL.md tương đối với thư mục gốc ứng dụng |
Ràng buộc
- Tối đa 1 thành phần UI trên mỗi ứng dụng
- Các giá trị
namecủa thành phần phải là duy nhất trong ứng dụng
Ví dụ mẫu
ai app
import { defineConfig } from '@kazzle/app';
export default defineConfig({
/** Dòng tagline danh mục một dòng. Bắt buộc để xuất bản. */
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({
/** Dòng tagline danh mục một dòng. Bắt buộc để xuất bản. */
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({
/** Dòng tagline danh mục một dòng. Bắt buộc để xuất bản. */
subtitle: 'My App',
/** Đường dẫn đến biểu tượng ứng dụng tương đối với thư mục gốc kho lưu trữ. Được tải lên CDN khi xuất bản. */
icon: 'components/ui/public/favicon.svg',
/** Các thành phần ứng dụng — mỗi mục định nghĩa một đơn vị có thể triển khai. Tối đa 1 thành phần UI. */
components: [
{ name: 'My App', type: 'ui', path: './components/ui' },
],
});