Currently I am using Node.js for the backend and either extjs or backbone for the client and I am now completely confused on the folder structure.
Using express
Heres my suggested folder structure:
appname
|--webapp
| |--img
| |--js
| | |--controllers
| | | |--controller.js
| | |--something.js
| |--css
| |--views
| | |-- appview.ejs
| |--index
| |--404 etc.
|--app.js
|--package.json
|--README
|-- etc.
I think its very tidy and easy to navigate in, because all the server and node_modules stuff is outside and the files I need for the application is in the "webapp" folder. If you really need a folder called "public" (I cant remember if express needs one or not) I think you can just rename the "webapp" folder to "public", or drop the "webapp" folder inside "public". I would also recommend using AngularJS instead of .ejs, but do what you want to do. :)
Just put the whole /webapp
under /public
so you'll end creating, for instance, frontend's models under /public/webapp/models
appname
|--models
| |--appmodel.js
|--public
| | |--webapp // extjs/backbone files
| | | |--models
| | | |--controllers
| | | |--css
| | | |--js
| | | |--img
| | | |--views
| | | | |--appview.ejs
| | | | |--extbasedview.ejs
|--routes
| |--router.js
|--app.js
In your place, I would do that way:
appname
|--ServerCode
| |--controllers
| |--models
| | |--appmodel.js
| |--routes
| | |--router.js
| |--views
| | |--appview.ejs
| |--app.js
|--public
| |--css
| |--js // any client-side javascripts
| |--models
| |--controllers
| |--...
The main idea is to place public folder outside of the scope of your server javascript files.
See an example here: https://github.com/madhums/node-express-mongoose-demo/