I'm about to attempt my first Angular JS project and it makes sense to use Node JS for the back end, even though it means learning both Angular and Node from scratch at the same time.
The first thing I'm trying to get my head round is a good file structure. So far my Pure HTML/CSS template has the following directory structure....
app.js --> app config
package.json --> for npm
public/ --> all of the files to be used in on the client side
css/ --> css files
app.css --> default stylesheet
img/ --> image files
app.js --> declare top-level app module
controllers.js --> application controllers
directives.js --> custom angular directives
filters.js --> custom angular filters
services.js --> custom angular services
angular.js --> the latest angular js
angular.min.js --> the latest minified angular js
angular-*.js --> angular add-on modules
version.txt --> version number
api.js --> route for serving JSON
index.js --> route for serving HTML pages and partials
index.jade --> main page for app
layout.jade --> doctype, title, head boilerplate
partials/ --> angular view partials (partial jade templates)
1) It usually does make some sense to make
saas/less files public as you may want to use client-side less->css conversion when debugging (less.js does that). Not sure what your
_site contains however (btw you should use lowercase folder for your project, especially for the public stuff).
2) It is usually a good practice to load AngularJS from Google CDN when in production, using only a local version for development, you could have two separate layouts depending on your environment.
3) Even if client-side rendering is the way to go, you may keep server side layout/views rendering, you will probably need it at some point (admin access, email rendering, etc.). However It can be helpful to use the
partials name from AngularJS in the public folder to help avoid confusion between server-side
views & client-side
You should clearly go for what seems the most logical thing to do at the current time, you will probably move things around as you get familiar with express.
You should check existing express framework to see how they structure their app. For instance, TowerJS has a pretty clean
config folder, however they mix up server-side & client-side code which I personally do not like.
Check this comparaison of NodeJS MVC frameworks to see how others do stuff. However, I would clearly start with vanilla express code in order to be in full control & to understand how things work before over-committing on any of theses frameworks.