NodeJs Application Structure
In this post I will show how I organize my node.js applications. I’ll start explaning the nodejs principles, with examples.
NodeJs follows the next principles:
- “Small is beautiful”
- “Make each program do one thing well”
Keep It Simple, Stupid (KISS) principle.
“Simplicity is the ultimate sophistication.” — Leonardo da Vinci
I think I already gave the idea of the way to structuring a node application. Creating microservices to do specific work, separating the complexity and decoupling the responsibilities.
One of the biggest problems that people have with Nodejs is the maintainability of the application. That’s the reason why is better to have 3 different micro applications than a big one.
This is a simple Web api using expressjs.
config: Application configurations for each different environment (production, dev, tests).
app: Folder with the application core. In this case we only have controllers and models.
libs: Local libraries.
tests: Contains Unit, Integration, and UI tests
Gruntfile: Grunt tasks. (Jshint, Node-inspector, Nodemon, mocha)
- logger — Winston wrapper for application logs.
- authentication — Authentication with JWT.
- cluster — Cluster application to take advantage of multi-core systems.
You can get the code on Github.
Thanks for reading, if you have any suggestions I’ll be glad to hear and discuss them with you.