The wrong way
I found it interesting to start writing this article by explaining the wrong way of designing an angular application.
The so common way to design an application is to group your modules (controllers, routes, services, factories, directives etc). The controllers to be in a controllers.js file, the services to be in a services.js file and so on. None can say that this is a bad design, but you will notice in the near future that this is not a so maintainable design because it's hard to find and amend a route that is inside the routes.js file and this file has more than 100 routes.
Before diving into details in the matter of full stack applications, I would like to point out the reasons that make me start searching of something like this. You might ask "something like what?" :).
Well, firstly I started experimented with angular generator for creating a single page application that would connected with a REST API. But what about if I wanted to make any heavily data manipulation or anything sensitive? In the other hand, I met NodeJs' sockets and I would probably wanted to use them in future.
For avoiding combine express with angular in a later stage, I decided to do it from beginning.