Skip to content

Struktur Direktori Proyek

Biawak menggunakan struktur folder modular yang terorganisir dengan sangat rapi untuk memisahkan logika API, konfigurasi database, middleware, serta utilitas pembantu.


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

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.

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.

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.

Kumpulan modul utilitas modular berkinerja tinggi, termasuk logger berbasis file, queue antrean BullMQ, dan inisialisator server WebSocket.