The build system uses Grunt for Javascript minification and obfuscation.
Required node dependencies are in package.json
Required php dependencies are in composer.json

Once you have checked out the git repository, you will need to run composer and 
npm to initialize the environment.

Download/install composer the usual way, then within the app directory run "composer install"

Download/install npm/nodejs (0.10.0) then globally install grunt-cli (npm install -G grunt-cli)
Initialize the node build environment using "npm install"

While building and testing, run "grunt build && grunt watch" 
This will build the initial application.js and application.min.js scripts while watching
for changes to the angular controllers, directives, filters, plugins and services.

Angular scripts are located in public/js/angular
app.js                - this is the main application for entry into the Angular HMVC
createAccount.js      - this is the main entry point for authentication before loading the full application
controllers/          - this contains the controllers for each major section of the front-end APP
directives/           - custom angular directives to make front-end input simpler etc
filters/              - custom angular filters to provide input and output pre/post processing
plugins/              - custom plugins, not currently used
services/             - core API services and models, models are typically managed in simple collections
                        with simple CRUD functionality.  No authentication is performed on the front-end,
                        all authentication and authorization is performed at the PHP layer.
                        Some services are simplified extentions of a standardized REST API AppModel.js and
                        AppModelCollection.js parent class, while others are specialized.

Other javascript libraries are generally kept in public/js and are minimized and included in the main application.js
and application.min.js files

For the laminas framework, the API and application are separated into 2 modules: API and Application

Front-end controllers are in module/Application/src/Application/Controller  Most of these are self-explanitory.
The PartialsController.php is used to provide password protected partials for the Angular HMVC system.  Partials
for this are stored in module/Application/view/application/partials - don't be confused by the Laminas framework's
partials located at module/Application/view/partials

All REST controllers are located in module/API/src/API/Controller (this is where the Angular services hook into
the PHP layer)

Authorization is managed by the module/Application/src/Application/Services/Auth/Listener ACL Auth listener which is
configured in the application autoload/global.php config

When satisfied that local development environment updates are correct, you must rebuild the application.min.js using
a new "grunt build" command (grunt watch does not create a minified application.min.js, just the development version application.js)
