Advantages:
- Non biased, non opiniated minimalist framework (mostly vanilla implementation with naming conventions)
- Isomorphic web application (both side created with JavaScript) Server side using Hapi.js framework with non intrusive view engine: Dust.js, client side using any 3rd party framework: vanilla-js, jQuery, bootstrap, and the same dust view engine.
- Dual rendering. For higher performance views can be executed on both server and client side. For maximum performance initial rendering happens on the server and any additional DOM manipulation (partial rendering) occur on the client side. (Google Performance Conference Video)
- View models are containing the view related logic (transformation, rendering and configuration options) and 100% reused on both server and client side.
- View engine syntax is not intruding or distorting HTML domain. Minimal overlap provides more freedom to UX designers and developers both. Views are reused on both server and client side.
- Server side unit tests for all models and every other piece of business logic (100% coverage). Using Lab.js test runner and Chai assertion library
- UI testing with test harnesses to isolate individual elements and decrease testing complexity. Test harnesses also help UX designers and developers to work with smaller components. Also helps QA to test with simplified isolated use cases.
- Full validation with Joi.js framework (comes with Hapi)
- Module separation based on naming conventions and a single build process to combine all client and server side resources using Gulp.js
- gulp lint
- gulp test
- gulp bundle
- gulp (default is bundle)
- http://hapijs.com (MVC type framework)
- http://dustjs.com (View engine)
- https://github.com/hapijs/joi (Validation)
- http://gulpjs.com (Application build process)
- http://swagger.io (Service API test framework)
- https://github.com/hapijs/lab (JS unit test execution framework)
- http://chaijs.com (Assertion library)