Struktur Direktori Proyek
Biawak menggunakan struktur folder modular yang terorganisir dengan sangat rapi untuk memisahkan logika API, konfigurasi database, middleware, serta utilitas pembantu.
π Struktur Folder Utama
Section titled βπ Struktur Folder UtamaβBerikut adalah pohon direktori dari proyek Biawak baru Anda:
my-app/
βββ bin/ # CLI tools pembantu (diabaikan saat rilis/copy)
βββ src/
β βββ ai/ # Integrasi API Provider (OpenAI, Gemini, etc)
β βββ config/ # Konfigurasi ORM dan database
β βββ db/ # Migrasi schema dan seed data
β β βββ drizzle/ # SQL migrasi otomatis dari drizzle-kit
β β βββ schema/ # Struktur tabel SQLite & MySQL
β β βββ seed.ts # Script seeding data bawaan
β βββ html/ # File static untuk dev portal & manual book
β βββ lib/ # Pustaka utilitas (WebSocket, Logger, Queue)
β βββ middleware/ # Middleware kustom (Auth, Error, Logger)
β βββ routes/ # Router Hono API modular
β βββ index.ts # Entry point utama aplikasi
βββ tests/ # Unit testing dengan Bun Test
βββ .env.example # Contoh variabel lingkungan
βββ package.json # Manajemen dependensi dan script
βββ tsconfig.json # Konfigurasi compiler TypeScript
π‘ Fungsi Utama Tiap Direktori
Section titled βπ‘ Fungsi Utama Tiap Direktoriβ1. src/routes/
Section titled β1. src/routes/βTempat Anda menulis semua endpoint RESTful API. Setiap modul (misalnya auth.ts, ai.ts) dipisahkan ke berkas router Hono masing-masing, kemudian di-mount secara kolektif di src/routes/index.ts.
2. src/db/
Section titled β2. src/db/βMengelola seluruh interaksi database menggunakan Drizzle ORM:
schema/: Berisi deklarasi skema tabel kustom terpisah untuk SQLite (pengembangan) dan MySQL (produksi).seed.ts: Script untuk mengisi data awal (seperti admin default) ke dalam database secara otomatis saat proyek pertama kali dibuat.
3. src/middleware/
Section titled β3. src/middleware/βMenyimpan middleware Hono kustom untuk validasi dan pengamanan HTTP request:
auth.ts: Melakukan intercept token autentikasi.ensureAdmin.ts: Validasi hak akses khusus administrator.errorHandler.ts: Penangkap error global untuk menjamin respon JSON yang bersih.
4. src/lib/
Section titled β4. src/lib/βKumpulan modul utilitas modular berkinerja tinggi, termasuk logger berbasis file, queue antrean BullMQ, dan inisialisator server WebSocket.
