Folder structure for both server side and thick client web app
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/
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
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. :)