Sunday, October 18, 2026

Backend Project Structure

 Panduan Lengkap Organisasi Folder Node/Express untuk Backend yang Scalable

Struktur folder yang baik adalah fondasi backend yang maintainable, scalable, dan mudah dipahami tim. Artikel ini membahas standar industri untuk mengorganisasi proyek Node.js/Express, lengkap dengan penjelasan setiap komponen dan alur request.

Folder Structure

Berikut adalah struktur folder yang direkomendasikan untuk proyek backend Node/Express:

backend/ ├── node_modules/ # Installed packages and dependencies ├── src/ │ ├── config/ # Database and environment setup │ ├── controllers/ # Handle HTTP requests and responses │ ├── middlewares/ # Auth, logging, validation, etc. │ ├── models/ # Database schemas and data structures │ ├── routes/ # API endpoints mapped to controllers │ ├── services/ # Business logic and integrations │ ├── utils/ # Reusable helper functions │ └── redis/ # Caching and Redis connection (if used) ├── app.js # Configure Express app and middleware ├── server.js # Start server and listen on port ├── .env # Secret keys and environment variables (never commit) ├── .gitignore # Files Git should ignore ├── package.json # Scripts and dependencies └── README.md # Project documentation

Penjelasan per Komponen

KomponenFungsi
config/Setup database, environment variables, dan konfigurasi global lainnya
controllers/Menangani HTTP request dan response — entry point untuk setiap endpoint
middlewares/Auth, logging, validation, error processing — berjalan sebelum/sesudah controller
models/Definisi database schema dan data structures
routes/Mapping API endpoints ke controller yang sesuai
services/Business logic, integrasi eksternal, dan pemrosesan data kompleks
utils/Reusable helper functions — fungsi kecil yang dipakai lintas modul
redis/Caching layer dan koneksi Redis (opsional, jika digunakan)
Tips: app.js dan server.jsdipisah agar testing lebih mudah — app.js export Express app tanpa listen, sementara server.js yang bertugas start server.

Root Files

FileFungsi
app.jsConfigure Express app, mount middleware, setup routes
server.jsStart server dan listen pada port tertentu
.envSecret keys dan environment variables — JANGAN pernah di-commit
.gitignoreDaftar file/folder yang diabaikan Git (node_modules, .env, dll)
package.jsonScripts, dependencies, dan metadata project
README.mdDokumentasi project — cara install, setup, dan run

Request Flow

Berikut adalah alur lengkap satu HTTP request dari client hingga response:

Client→Route→Middleware→Controller→Service→Model / Database→Response

Detail Alur Request

  • 1. Client — Mengirim HTTP request (GET, POST, PUT, DELETE, dll)
  • 2. Route — Mencocokkan URL dan method ke handler yang sesuai
  • 3. Middleware — Auth check, logging, validation, parsing body — berjalan sebelum controller
  • 4. Controller — Menerima request, validasi input, memanggil service
  • 5. Service — Business logic, integrasi eksternal, transformasi data
  • 6. Model / Database — Query database, create/read/update/delete data
  • 7. Response — Data dikembalikan ke client sebagai JSON

Contoh Implementasi

app.js

// app.js - Configure Express app const express = require('express'); const app = express(); app.use(express.json()); app.use('/api/users', userRoutes); module.exports = app;

server.js

// server.js - Start server const app = require('./app'); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });

Prinsip Penting

  • Separation of Concerns — Setiap folder punya tanggung jawab jelas
  • Single Responsibility — Setiap file/module hanya melakukan satu hal
  • Reusability — utils/ dan services/ bisa dipakai lintas fitur
  • Testability — app.js terpisah dari server.js membuat testing lebih mudah
  • Scalability — Struktur ini mudah dikembangkan saat project bertambah besar
Remember: Konsistensi lebih penting daripada kesempurnaan. Pilih satu struktur, patuhi, dan dokumentasikan di README agar seluruh team memahami.

No comments:

Post a Comment