What is a Full Stack
- A database, preferably NoSQL database such as MongoDB
- Middleware e.g. Express.js
- Single-page application e.g. Angular.js, Backbone.js, and Ember.js
NoSQL databases are schema-less and based on map-reduce. This allows them to be very flexible and highly scalable i.e. ideal for startup projects.
The primary goal of middleware is to provide reusable features so that developers don’t have to re-invent the wheel. Features are usually provided as API or utility methods.
Single-page application (SPA)
For over two decades, the dominant web technologies were based on stateless communications between client and server. Node.js allows real-time two way communication between client and server.
Express is a web application framework which provides a set of features (APIs and utility methods) as middleware for web and mobile application development
Angular is a Google product and it is Google quality. It is easy to learn but difficult to master. As with any Google product, it improves very rapidly or becomes obsolete very rapidly. If I have to bet on an SPA framework, I would bet of Angular.
Backbone is a simple framework to facilitate SPA creation. It is ideal for simple SPAs but lack horsepower for complex SPAs. One way to build complex SPAs using backbone is to use is in conjunction with Marionette. This allow every component to be a simple application but the final application to be very complex.
Feature rich and powerful framework for create SPAs. It can easily handle complex SPAs but it does have a steeper learning curve.
A facebook product that is easy to learn. It allows rapid SPA development and its strength lies in its Virtual DOM which makes the end product run very fast.
Styling is an important consideration in full-stack development. One way to deal with this challenge is to use styling frameworks such as Bootstrap (http://getbootstrap.com/) or Foundations (http://foundation.zurb.com/). If you need to write your own CSS, it is more efficient to use SASS (http://sass-lang.com) or LESS (http://lesscss.org) than write CSS. SASS and LESS are languages that allow you to write functions which get converted to CSS.
Grunt.js Grunt is a task runner. It automates repetitive tasks such as compiling LESS files
Gulp.js Automates and enhances workflows
Other Full-stack solutions