BAB 14 – Struktur Folder Backend Node.js: Fondasi Proyek yang Rapi dan Scalable

BAB 14 – Struktur Folder Backend Node.js: Fondasi Proyek yang Rapi dan Scalable

Struktur folder bukan soal gaya, tapi soal keberlanjutan proyek. Backend yang awalnya kecil bisa tumbuh menjadi besar dan kompleks. Tanpa struktur yang jelas, kode akan sulit dibaca, susah dirawat, dan rawan bug.

Struktur folder yang baik membantu:

  • memisahkan tanggung jawab kode
  • memudahkan kolaborasi tim
  • mempercepat debugging dan pengembangan

Ini adalah kebiasaan profesional yang wajib dibangun sejak awal.


Masalah Umum Backend Tanpa Struktur

Ciri backend yang tidak terstruktur:

  • semua route di satu file
  • logic bisnis bercampur dengan routing
  • sulit menambahkan fitur baru

Contoh buruk (hindari):

index.js

Semua kode menumpuk di satu file. Awalnya terlihat mudah, tapi cepat menjadi mimpi buruk.


Struktur Folder Backend Sederhana tapi Benar

Struktur dasar yang cocok untuk pemula hingga menengah:

backend/
├── src/
│   ├── routes/
│   ├── controllers/
│   ├── services/
│   ├── middlewares/
│   ├── models/
│   └── app.js
├── index.js
├── package.json

Struktur ini sudah cukup rapi dan mudah dikembangkan.


Folder routes: Mengatur Endpoint API

Folder routes berisi daftar endpoint tanpa logika berat.

// routes/userRoutes.js
import express from "express";
import { getUsers } from "../controllers/userController.js";

const router = express.Router();

router.get("/", getUsers);

export default router;

Routes sebaiknya hanya bertugas menerima request dan meneruskannya.


Folder controllers: Pusat Logika Request

Controller menangani logika request dan response.

// controllers/userController.js
export function getUsers(req, res) {
  res.json({
    users: []
  });
}

Controller membuat kode lebih bersih dan terorganisir.


Folder services: Logika Bisnis Aplikasi

Services berisi logika inti aplikasi.

// services/userService.js
export function fetchUsers() {
  return [];
}

Jika aplikasi berkembang, service bisa terhubung ke database atau API lain.


Folder models: Representasi Data

Models digunakan untuk:

  • struktur data
  • schema database
  • validasi data

Contoh sederhana:

// models/userModel.js
export const User = {
  id: Number,
  name: String
};

Pada tahap selanjutnya, model biasanya terhubung dengan ORM.


Folder middlewares: Middleware Terpisah dan Rapi

Middleware sebaiknya tidak ditulis langsung di index.js.

// middlewares/authMiddleware.js
export function auth(req, res, next) {
  if (!req.headers.authorization) {
    return res.status(401).json({
      message: "Unauthorized"
    });
  }
  next();
}

Pendekatan ini membuat middleware bisa digunakan ulang.


File app.js: Konfigurasi Aplikasi Express

app.js berisi konfigurasi utama Express.

import express from "express";
import userRoutes from "./routes/userRoutes.js";

const app = express();

app.use(express.json());
app.use("/users", userRoutes);

export default app;

File ini fokus pada setup, bukan logika bisnis.


File index.js: Entry Point Aplikasi

index.js digunakan untuk menjalankan server.

import app from "./src/app.js";

app.listen(3000, () => {
  console.log("Server berjalan di port 3000");
});

Dengan pemisahan ini, kode lebih mudah diuji dan dirawat.


Contoh Alur Request dalam Struktur Ini

Alur request:

  1. client memanggil /users
  2. route menerima request
  3. controller memproses data
  4. service menjalankan logika
  5. response dikirim ke client

Alur ini jelas dan mudah diikuti.


Tips Menjaga Struktur Tetap Rapi

Beberapa tips penting:

  • satu file satu tanggung jawab
  • jangan taruh logika di route
  • konsisten dalam penamaan

Struktur rapi lebih penting daripada sekadar cepat jadi.


Kesimpulan

Struktur folder adalah fondasi backend Node.js yang sehat. Dengan struktur yang benar, kita bisa:

  • mengembangkan fitur tanpa kekacauan
  • bekerja dalam tim dengan nyaman
  • mempersiapkan aplikasi untuk skala besar

Bab ini menjadi bekal penting sebelum masuk ke database, autentikasi, dan deployment.