Questions And Answers

More Tutorials

NodeJS Project Structure

A simple nodejs application with MVC and API

.The first major distinction is between the dynamically generated directories which will be used for hosting and source directories.

.The source directories will have a config file or folder depending on the amount of configuration you may have . This includes the environment configuration and business logic configuration which you may choose to put inside config directory.

|-- Config
 |-- config.json
 |-- appConfig
 |-- pets.config
 |-- payment.config

.Now the most vital directories where we distinguish between the server side/backend and the frontend modules . The 2 directories server and webapp represent the backend and frontend respectively which we can choose to put inside a source directory viz. src.

You can go with different names as per personal choice for server or webapp depending on what makes sense for you. Make sure you don't want to make it too long or to complex as it is in the end internal project structure.

.Inside the server directory you can have the controller ,the App.js/index.js which will be you main nodejs file and start point .The server dir. can also have the dto dir which holds all the data transfer objects which will be usd by API controllers.

|-- server
 |-- dto
 |-- pet.js
 |-- payment.js
 |-- controller
 |-- PetsController.js
 |-- PaymentController.js
 |-- App.js

The webapp directory can be divided into two major parts public and mvc , this is again influenced by what build strategy you want to use. We are using browserfiy the build the MVC part of webapp and minimize the contents from mvc directory simply put.

|-- webapp |-- public |-- mvc

.Now the public directory can contain all the static resources,images,css(you can have saas files as well) and most importantly the HTML files .

|-- public
 |-- build // will contianed minified scripts(mvc)
 |-- images
 |-- mouse.jpg
 |-- cat.jpg
 |-- styles
 |-- style.css
 |-- views
 |-- petStore.html
 |-- paymentGateway.html
 |-- header.html
 |-- footer.html
 |-- index.html

The mvc directory will contain the front-end logic including the models,the view controllers and any other utils modules you may need as part of UI. Also the index.js or shell.js whichever may suite you is part of this directory as well.

|-- mvc
 |-- controllers
 |-- Dashborad.js
 |-- Help.js
 |-- Login.js
 |-- utils
 |-- index.js

So in conclusion the entire project structure will look like below.And a simple build task like gulp browserify will minify the mvc scripts and publish in public directory. We can then provide this public directory as static resource via express.use(satic('public' )) api.

|-- node_modules
 |-- src
 |-- server
 |-- controller
 |-- App.js // node app
 |-- webapp
 |-- public
 |-- styles
 |-- images
 |-- index.html
 |-- mvc
 |-- controller
 |-- shell.js // mvc shell
 |-- config
 |-- .gitignore
 |-- package.json


In this page (written and validated by ) you learned about NodeJS Project Structure . What's Next? If you are interested in completing NodeJS tutorial, your next topic will be learning about: NodeJS Avoid callback hell.

Incorrect info or code snippet? We take very seriously the accuracy of the information provided on our website. We also make sure to test all snippets and examples provided for each section. If you find any incorrect information, please send us an email about the issue:

Share On:

Mockstacks was launched to help beginners learn programming languages; the site is optimized with no Ads as, Ads might slow down the performance. We also don't track any personal information; we also don't collect any kind of data unless the user provided us a corrected information. Almost all examples have been tested. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. By using, you agree to have read and accepted our terms of use, cookies and privacy policy.