Wednesday, October 24, 2018

v0.4.0: Moving towards Beta ready

So, the project is moving along at a steady pace, and as we battle test the code in production environments, we are getting most of the kinks ironed out. In this release we are rolling out additional functionality:
  • A comprehensive CLI
  • A yeoman generator
  • A model query language

The CLI

One of the major enhancements in this release is the support of a CLI.  Previously there had been a smattering of scripts that were accessible from various entry points.  This made individual usage quite simple, but discovery was fairly complicated.  Enter in the extensible CLI. 

Every module in the framework now has the ability to declare extensions to the CLI.  All are fully documented at in the documentation site.   The initial CLI rollout contains:
  • clean - Remove compilation cache
  • compile - Pre-compile application for performance
  • run - Run specific @Application class
  • test - Execute tests
  • email-template - Generate/Test email templates
  • swagger-client - Generate swagger client

The Yeoman Generator

Additionally, the original path of using a starter project only went so far.  In a desire to allow for more customization and a guided path to project initialization, the framework now supports a yeoman generator.  The primary features of this are to establish a RESTful application with a model based backend (mongo/elasticsearch). 

Model Query Language

In addition to the normal model support, we have rolled out a query language that will allow for expressive queries, primarily intended for the end user.  The goal is to model this off a standard query language like SQL.  This will be only for querying, but should enable some interesting functionality.

Future Roadmap

In addition to the finished features, there are quite a few interesting features currently in development.

Lambda/Serverless Support

Currently we are building out support for AWS Lambda in the Rest framework.  This will allow for user to package their RESTful applications as a series of lambda functions, established with routes defined in cloud formation configurations.  

Additionally, the goal is to support deployment as well.  This feature dovetails with new CLI compile feature to be able to precompile all the needed code for a minimal deployment.  

Additionally, the goal is to only include the needed modules per controller to minimize the lambda size.

Enhanced Elasticsearch Support

Provide the ability to leverage more specific functionality of elasticsearch, like aggregations and full text searching.  

SQL Support for Model

Slightly farther down the roadmap is the ability to support SQL as a Model backend.  The current goal is to leverage sequeulize for handling the primary functionality of mapping objects to database queries.