Customization
NodeBuilder projects are intentionally lightweight — so you can easily modify them for your own workflow.
This guide shows how to adjust configuration, extend templates, and add your own logic safely.
1. Change the Server Entrypoint
Each template includes a server.js file — this is where your app boots up.
Example default:
import app from "./src/app.js"
import { connectDB } from "./src/config/db.js"
const PORT = process.env.PORT || 5000
connectDB()
app.listen(PORT, () => console.log(`Server running on port ${PORT}`))You can:
- Rename
server.jstomain.jsorindex.js - Add new startup logic
- Enable clustering or background jobs
Example custom version:
import app from "./src/app.js"
import cluster from "cluster"
import os from "os"
if (cluster.isPrimary) {
os.cpus().forEach(() => cluster.fork())
} else {
app.listen(5000, () => console.log(`Worker ${process.pid} running`))
}2. Add Global Middleware
Open src/app.js.
Here you can register additional middleware before routes load.
Example: add rate-limiting or CORS tweaks.
import rateLimit from "express-rate-limit"
const limiter = rateLimit({
windowMs: 10 * 60 * 1000,
max: 100,
message: "Too many requests"
})
app.use(limiter)You can also define your own reusable middleware:
// src/middleware/requestLogger.js
export const requestLogger = (req, res, next) => {
console.log(`[${req.method}] ${req.url}`)
next()
}
// src/app.js
import { requestLogger } from "./middleware/requestLogger.js"
app.use(requestLogger)3. Extend Templates with Custom Files
Want to add your own scripts, services, or schemas?
Just create new folders under src/.
For example:
src/
┣ services/
┃ ┗ email.service.js
┣ utils/
┃ ┗ jwtHelper.js
┗ scripts/
┗ seedDatabase.jsYou can wire these in via npm scripts:
"scripts": {
"seed": "node src/scripts/seedDatabase.js"
}[!TIP] You can even build your own reusable templates and register them in
backend/src/config/templates.js.
4. Change Configuration
Configs live in src/config/.
Examples:
db.js→ database connection logiclogger.js→ Winston or console-based loggersocket.js→ Socket.IO setup
You can add new configs (e.g., Redis, Mailer, etc.) and import them in server.js.
5. Enable TypeScript (Optional)
To switch a generated project to TypeScript:
-
Install dependencies:
npm i -D typescript @types/node ts-node npx tsc --init -
Rename files:
server.js→server.tssrc/**/*.js→.ts
-
Update package.json:
"scripts": { "dev": "ts-node server.ts" }
Summary
| Task | File to Edit | Description |
|---|---|---|
| Change entrypoint | server.js | Rename or modify app startup |
| Add middleware | src/app.js | Register global or route-level middlewares |
| Extend template | src/ | Add new folders like services or utils |
| Change config | src/config/ | Adjust env, DB, or socket behavior |
| Enable TS | root + src/ | Convert to TypeScript manually |
[!NOTE] NodeBuilder projects are simple by design — every folder and file can be edited or extended freely. There are no internal locks, so customization is straightforward and transparent.