I’ve found that this flexibility comes with a cost though. In the olden days of Ruby on Rails and Symfony2 the idea of convention over configuration helped create a structure for developers to organize their code. Even though there are plenty of frameworks that do similar things in nodejs, there simply isn’t a singular “Rails way” of doing things like there used to be in the Ruby on Rails world. Creating an application in Symfony2 forced you to think in doctrine terms of entities, form validators, controllers and services and migrations. I agree, this kind of structure restricts you from doing fancy extraodinary things but for the bread and butter applications and API’s it is such a relief to know exactly in which folder and file every piece of functionality will be.
Still, the advantages of nodejs outweigh these downsides and if you want to adhere to more opinionated styles of programming in nodejs there are frameworks such as Hapi.js and Sails.js that will allow you to structure your application in a similar way. The thing is that every nodejs developer is simply used to using thousands of different packages and everyone uses different patterns to ship stuff fast.
I’d be really interested to get a discussion going, how are you guys thinking about conventions in structuring web applications, should there be more of a generic “Node way” of building applications or should we just embrace the fact that we have a new library every day that allows us to create cutting edge functionality?