Mengorganisir kode Express.js agar maintainable saat project berkembang.
Struktur folder yang baik:
src/
├── routes/ ← Route definitions
│ ├── users.js
│ └── posts.js
├── controllers/ ← Business logic
│ ├── userController.js
│ └── postController.js
├── services/ ← Complex business logic
│ └── authService.js
├── models/ ← Database models
│ └── User.js
├── middleware/ ← Custom middleware
│ ├── auth.js
│ └── validate.js
├── utils/ ← Helper functions
└── app.js ← Express setup
Separation of concerns:
// routes/users.js — hanya routing
router.get("/", userController.list);
router.post("/", validate(createUserSchema), userController.create);
// controllers/userController.js — handle request/response
export const list = async (req, res) => {
const users = await userService.getAllUsers();
res.json(users);
};
// services/userService.js — business logic
export const getAllUsers = async () => {
return db.query("SELECT * FROM users WHERE active = 1");
};
Best practices:
- Gunakan environment variables (
.env) untuk konfigurasi - Jangan commit
.env,node_modules, atau secrets - Gunakan helmet untuk security headers
- Gunakan cors middleware untuk cross-origin
- Gunakan rate limiting untuk mencegah abuse
- Log semua errors tapi jangan expose ke client