Best Practice for Node.js Folder Structure

ByYogesh Mishra
September 23rd . 5 min read
Best Practice for Node.js Folder Structure

Project structuring is an important topic because the way you bootstrap your application can determine the whole development experience throughout the life of the project.


Where we define endpoints should be noun based and do not use verbs.

router.get(“api/v1/get-book-list”, getBookMethod); // avoid

router.get(“api/v1/book-list”, getBookMethod); // please use

Controller –

  • Should be thin

Basic skeleton of the API should be there if the method is getting big, use a service file and move some logic there. Write reusable code and common functions.

  • Response message, status code, static keys, etc. Import them from external utility files.
  • Using try-catch blocks in each method of the controller will help to handle errors.
  • If using rdbms (postgresql, sql)
  • The application should be stateless. Maintaining the state will create problems when we have a scalable application.

Ex. You can’t save a web socket circular object into an app instance of express.

  • The naming convention of files and folder (lower case and dash-separated will look good)

Organizing Files around Module

Best Practice for Node.js Folder Structure

Best Practice for Node.js Folder Structure

Place Your Test Files Next to The Module

Tests are not just for checking whether a module produces the expected output, they also document your modules. Because of this, it is easier to understand if test files are placed next to the implementation.

Put your additional test files in a separate test folder to avoid confusion.

Best Practice for Node.js Folder Structure

👉 Use a config Directory

To place your configuration files, use a config directory.

Best Practice for Node.js Folder Structure

👉 All shell scripts in scripts folder

Avoid writing long scripts in package.json. Create a separate file for that and use that file.

Best Practice for Node.js Folder Structure

👉 Third-party API calls and common reusable code in services folder

Third-party API integration in separate service files and maintain them in the services folder.

To sign and verify a token create a separate jwt-service and import this to sign and verify the token.

Best Practice for Node.js Folder Structure

👉 Utilities directory for common utils

Create a subfolder on the basis of type like server-utilities–

Best Practice for Node.js Folder Structure

👉 DB directory for database-related stuff (MongoDB or Postgres)

Let’s assume we are dealing with postgres, then-

Best Practice for Node.js Folder Structure

👉 Request validation : express-validator

Add an express-validator to validate and sanitize the request. Validation should be added on the model level and on the request level.

Best Practice for Node.js

👉 Do not write every constant in the .env file

Only server-related essential credentials should be there for third parties etc.

Create a separate file and read from there like environment.json or put them in constants.js in utilities.

  • API doc: For API documentation if you are using API doc. Mention the apidoc generation command in package.json like-

"doc": "apidoc -i app/ -o client/dist/eps-client/doc", and npm run doc apidoc.json will be in parallel of package.json