Sails.js is a Node.js MVC framework that I have used for several projects in the past. In these projects, it served as the API backend, with the front-end taken care by either EJS views or a mobile app built with PhoneGap. Build processes are handled via Grunt.
After a two years break, I returned to Sails.js for a project involving a React front-end. Much has happened in the front-end landscape in these two years.
The Front-End Landscape
Most prominently, the rise of front-end frameworks such as React, Angular, and Vue. This is accompanied by the rise of new build tools, especially Webpack, which has relegated Grunt which Sails.js is using to a secondary role of a task runner which is not often used.
Often when uses a front-end framework in production, the build is served from a web server such as Nginx or Apache, or from a Content Distribution Network (CDN). In this most frequent case, the views provided by Sails.js will not be used. Moreover, the front-end developers do not need the Grunt used by Sails.js.
The framework has certainly being improved to use Node.js
await. So on the face of it, you still have all the Sails.js advantages, such as the unified handling of HTTP and socket endpoints, and the Waterline ORM.
But as I was diving into my code, I noticed that as the Sails.js team has been working on their Machines framework, they have started to tilt Sails.js in that direction. This was especially noticeable for helpers. This might have been a good direction if it was carried in a uniform way and across the board. But my feeling was that they just touched the helpers, and there they created what seemed like machine notation of helpers, such as
Description. So the feeling I got that there is an unbalanced framework some of it looks like a new generation and the most important part of the framework, that of the controllers still in the old generation. On top of that, I am not sure the new generation does well to Sails.js.
The Neglected Documentation
The Sails.js documentation is not comprehensive and hard to search. Moreover, the level is detail is not uniform and seems a mix of the old and new generation.
Will I Use Sails.js in the Future?
Not sure. I am looking at alternatives. Either Express which Sails.js has always included, but for which a much richer ecosystem is available, or Feathers. The latter has GraphQL inside, while Sail.js has no GraphQL support.