Gambaran umum
Modul API Hono, klien bertipe, TanStack Query, dan OpenAPI Scalar.
TurboJet dirancang sebagai kit fullstack yang skalabel dengan lapisan API khusus yang dapat diperluas. API produk ada di packages/api dan di-mount oleh app marketing di /api (apps/marketing/src/app/api/[[...route]]/route.ts).
Frontend memanggilnya lewat klien RPC Hono bertipe (hc) di @repo/api/client, lalu membungkus pemanggilan dengan hook TanStack Query di apps/marketing/src/mutations/.
Mengapa Hono
Hono adalah framework web TypeScript yang modern dan minimal. Cepat, mudah
diperluas, dan bisa di-deploy hampir di mana saja. TurboJet memakai klien
RPC Hono (hc) untuk pemanggilan bertipe dari browser ke router Anda.
Mengapa TanStack Query
TanStack Query memberi caching, state loading/error, dan pola konsisten
untuk mutation dan query. Padukan dengan handle() di sekitar klien bertipe
agar respons gagal menjadi error dengan pesan dari API.
Checkout storefront adalah route Next terpisah (POST /api/checkout), bukan modul billing Hono. Route auth Better Auth ada di /api/auth saat di-mount oleh app host.
Arsitektur
| Lapisan | Path | Tujuan |
|---|---|---|
| Mount router | packages/api/src/index.ts | Menggabungkan router modul di bawah /api |
| Router modul | packages/api/src/modules/*/router.ts | Handler HTTP, validasi, auth, rate limiting |
| Service | packages/api/src/modules/*/service.ts | Logika bisnis dan query database |
| Client | apps/marketing/src/lib/api.ts | Klien Hono bertipe untuk request browser |
Scalar / OpenAPI
Saat features.apiDocs aktif, referensi tersedia di:
/api/reference— UI Scalar/api/openapi.json— dokumen OpenAPI mentah
Secara default, docs API aktif di development dan nonaktif di production. Dokumen OpenAPI dirawat manual di packages/api/src/openapi.ts (bukan di-generate dari oRPC).
Panduan
Mendefinisikan endpoint API
Schema, service, router Hono, dan mounting.
Melindungi endpoint API
Publik, sesi opsional, requireAuth, dan admin.
Memakai API di frontend
Klien bertipe, handle(), dan TanStack Query.
Streaming AI chatbot
POST /api/ai/chat stream lewat @repo/ai.
Storage
Unggah terpresign di /api/storage.
Membangun fitur
Vertical slice Feedback lengkap.