Programming Tutorial Node.js Web Development 25 July 2025

Mengenal Struktur Folder AdonisJS 6: Fondasi Proyek Web Modern

Mengenal Struktur Folder AdonisJS 6: Fondasi Proyek Web Modern
Bagikan:

Ketika membangun aplikasi web dengan AdonisJS 6, memahami struktur folder adalah langkah awal yang sangat penting. Struktur yang rapi dan konsisten akan memudahkan pengembangan, debugging, hingga scaling aplikasi. Artikel ini akan membahas secara mendalam struktur folder AdonisJS 6, fungsi tiap direktori, serta tips best practices agar proyekmu tetap terorganisir dan scalable.

Mengapa Struktur Folder Penting?

Struktur folder bukan sekadar “aturan main” framework, tapi fondasi yang menentukan workflow, maintainability, dan kemudahan kolaborasi tim. AdonisJS 6 mengadopsi pendekatan opinionated—struktur sudah disiapkan agar developer bisa langsung fokus ke fitur, bukan setup awal.

Gambaran Umum Struktur Proyek AdonisJS 6

Setelah menjalankan perintah inisialisasi:

npm init adonisjs@latest -- -K=web --db=mysql

Kamu akan mendapatkan struktur seperti berikut:

├── app
│   ├── controllers
│   ├── exceptions
│   ├── middleware
│   ├── models
│   ├── validators
├── config
│   ├── app.ts
│   ├── database.ts
│   ├── session.ts
│   └── ...
├── database
│   ├── migrations
│   ├── seeders
├── public
├── resources
│   ├── views
│   ├── js
│   ├── css
│   ├── fonts
│   ├── images
├── start
│   ├── env.ts
│   ├── kernel.ts
│   ├── routes.ts
│   ├── validator.ts
│   ├── events.ts
├── tests
│   ├── bootstrap.ts
│   ├── functional
│   ├── regression
│   ├── unit
├── types
│   ├── events.ts
│   ├── container.ts
├── providers
│   ├── app_provider.ts
│   ├── http_server_provider.ts
├── .env
├── package.json
├── tsconfig.json
Penjelasan Setiap Folder Utama
  • app/: Tempat utama logic aplikasi. Berisi controller, model, middleware, validator, dan exception.
  • config/: Semua file konfigurasi runtime, baik bawaan maupun package eksternal.
  • database/: Menyimpan migration, seeder, dan (jika ada) factory untuk database.
  • public/: Static files (gambar, CSS, JS) yang bisa diakses langsung oleh browser.
  • resources/: Asset frontend (Edge views, JS, CSS, fonts, images, lang/translation).
  • start/: File bootstrap aplikasi (env, kernel, routes, events, validator).
  • tests/: Struktur testing (unit, functional, regression) dan bootstrap test.
  • types/: Custom TypeScript types/interfaces untuk aplikasi.
  • providers/: Service provider custom untuk modularisasi fitur.
Studi Kasus: Menambah Fitur Baru

Misal kamu ingin menambah fitur “Post”. Berikut best practice penempatan file:

  • Controller: app/controllers/posts_controller.ts
  • Model: app/models/post.ts
  • Migration: database/migrations/xxxx_create_posts_table.ts
  • Seeder: database/seeders/post_seeder.ts
  • Validator: app/validators/post_validator.ts
  • Route: start/routes.ts
  • View: resources/views/posts/index.edge

Dengan struktur ini, setiap fitur mudah dicari dan di-maintain.

Alias Import dan Modularisasi

AdonisJS 6 mendukung alias import di package.json:

{
  "imports": {
    "#controllers/*": "./app/controllers/*.js",
    "#models/*": "./app/models/*.js",
    "#middleware/*": "./app/middleware/*.js",
    "#validators/*": "./app/validators/*.js",
    "#config/*": "./config/*.js"
  }
}

Contoh import modular:

import Post from '#models/post'
import PostsController from '#controllers/posts_controller'
Best Practices Organisasi Proyek
  • Ikuti struktur default: Hindari custom folder kecuali benar-benar perlu.
  • Pisahkan domain logic: Satu folder untuk satu domain (misal: user, post, comment).
  • Gunakan alias import: Memudahkan refactor dan menjaga konsistensi.
  • Tempatkan konfigurasi di config/: Jangan hardcode di logic aplikasi.
  • Testing terpisah: Semua test di folder tests/ sesuai jenisnya.
  • Provider untuk fitur besar: Modularisasi dengan service provider jika fitur makin kompleks.
Tips Debugging dan Maintenance
  • Gunakan path helper bawaan AdonisJS, misal app.modelsPath('user.ts') untuk resolve path model.
  • Cek file .env untuk environment variable, jangan commit data sensitif ke repo.
  • Manfaatkan npm run lint dan npm run format untuk menjaga kualitas kode.
  • Dokumentasikan struktur custom di README jika ada perubahan besar.
Sumber Referensi dan Dokumentasi

Struktur folder yang baik adalah investasi jangka panjang untuk maintainability dan scaling aplikasi. Dengan mengikuti best practices AdonisJS 6, kamu akan lebih mudah berkolaborasi, debugging, dan menambah fitur baru tanpa takut “tersesat” di dalam kode. Yuk, cek kembali struktur proyekmu dan pastikan sudah optimal!