My impression from Sails.Js


At this post I will briefly share my impressions from Sails.JS as the server-side framework I experienced with at the Fuseday.
Sails.JS is a framework that provides a complete FullStack solution based on MVC architecture for developing web applications.

I think sails is awesome, and I'll try to explain why:

On daily basis, I work with Express as the web framework for node.  Express is a light abstraction on top of connect that handles server requests.  With Express I feel like fundamental things are missing.  Usually an app (not just a service) built from data, views and logic, and with Express I feel I have to wire-up all three of them with no help from the framework. And if the app is getting bigger, maintaining it become difficult, and keeping consistency while doing so, is even harder.
Sails.js is different due to its holistic approach. There are some significant things you get for free just by creating an app and lifting those sails:

  • The Library structure is set-up for you as you expect from an MVC approach: you get a complete separation between the Models, Views and Controllers.
  • Sails.js fully equipped – a new app already contains: locals, i18n,, REST API, a routing mechanism for serving views and data.
  • REST Blueprints - automatically generated JSON API for manipulating models, (You don't have to write any backend code to build simple CRUD apps).
  • The different pieces of the app are already configured – yeah, you should read about it and understand how to change it, but it is straightforward: sails contains a "Config" folder with many stuff to configure like connection to a data provider, sockets approach, policies, routes, bad requests notifications, sessions and more.
  • Adding entities is extremely fast and easy, for example, in order to add the entity "User" you should type at the terminal: "sails generate user" This will instantly create and wire up a controller name UserController.js, and a model name User.js.  (At the model you can sets the properties of an entity and even declare data types and validation rules).
  • Database support – PostgreSQL, MySQL, MongoDB, Memory and Disk. Additional libraries isn't required.


Sails.JS uses by default Embedded JavaScript (EJS) as the View engine, it generates the view at the server side and serve it as a page.  Personally I don’t like EJS, I do like that sails is flexible enough to let me change it to any View engine I desire.

What next?

From my short experience with Sails.js, I believe it can and should be a worthy candidate for a development framework in any future challenges.   At the company where I work we are heavily considering to migrate our server side to Sails.js ecause of the reasons I mentioned above.

Frontend Group Lead

Frontend Group