What is Sails.js?
Sails is a Rails like web application development framework in Node.JS. What the Sails.JS team says about “Sails.JS”.
Sails.js philosophy, performance and community
The wonderful guys from Balderdash who built the Sails.JS made the framework super duper simple to quickly create Enterprise Class Web Applications in Node.JS but I could not find any good starter application other than some “TODO” or discrete samples hence I wanted to build a production ready (mainly the UI layer) enterprise class web application with the following objectives:
- Minimalistic User Interface Design using Twitter Bootstrap
- Ability to change the Color theme of the Website using LESS
- Client side data caching for components/widgets like dropdowns, multi-select dropdowns, radio button groups using local storage with ability to invalidate the cache
- Ready made server side pagination control for the bootstrap data tables (the component calls two REST apis to get the result collection & count of records as jquery promise ajax call)
- Easy to use with no-coding client side validation attachment for form controls
- Standard and consistent user experience for form controls, data tables, validation, error notifications, progress indicator for long running operations etc.
- Server calls from the UI layer through Jquery Promise (Ajax) which consumes the controller actions (Blueprint & custom) as REST API calls
- MongoDB backend (for schema less approach)
- MongoDB GridFS for as document store
- Automatic CRUD forms code generation for master data management. Some example master data are:
- Bla bla bla…
All masters require, CRUD forms, their data needs to be shown in dropdowns, multi selects, radio button groups, look-ups, list view, datagard with search in another forms etc. It requires lot of repetitive code which is automated through scaffolding
- Ready to use common use cases for any projects
- Base controller & Models (Inheritance through lodash)
- Login form
- Dynamic navigation & menus
- Users Creation with multiple roles (one-to-many)
- User details & list view with server side pagination
- Master data forms i.e. Role, Department
- Forgot password
- Email notification through “mailgun” cloud email engine
- Result with total records (combining Find() & Count() in promise) for server side pagination
- Encrypted passwords
- Utilities library to host common functions
- User interface to search and filter log files
- JSON driven user manual page
- File uploader widget with cloud integration.
- Adapter to store document in the MongoDB GridFS, Azure Blob storage etc.
- File uploader has following loosely coupled partials
- File uploader form with progres indicator
- File downloader
- File listing
- No attributes in the model. All are dynamic like in C# dynamics
- Custom configuration files for Application settings & Web Settings
- Queuing architecture for long running processes – RabbitMQ server & client (Pub & Sub)
All of the above said are up and running in my ASP.NET MVC implementation (ALT.NET way coding) which I am porting to Sails.JS with the help of my company VmokshaTechnologies Pvt. Ltd. colleagues Poulomi, Asharani, Sivaprasad & karthiga who generously agreed to contribute.
What we will develop finally in STROBE?
It is a generic implementation but I am planning to build an IT Asset Management System
Want to see the sneak peek of the strobe Application? watch the screencast
Dive into STROBE!
I will be writing series of Blog posts for Strobe. Please stay tuned to follow along the development of STROBE. Even you can download the code in the as-is state and see it working but you may have to go through tough time in understanding yourself.