Challenge Overview
The client is currently implemented in Javascript, runs in a web browser, and uses http://www.pixijs.com/ for WebGL and Canvas rendering. The code has gone through many, many iterations over a number of years and needs to be modernised a bit to clean it up and get it ready for optimisation.
In the forum is the existing code for the Pixi receiver, as well as a configuration to use locally. This configuration will allow you to load up the Pixi receiver and see a production interface rendered on the screen, with a virtual remote control you can use to control the input.
Refactor codebase
This codebase is old and needs to be updated to the most recent Javascript standards.
* Make sure the dependencies in the package.json are the latest versions
* Remove unused / redundant code
* Make sure all dependencies actually apply to the project
* If a dependency is outdated or could be replaced by something better, update the code appropriately
* Remove grunt dependencies
* Minify through webpack instead
* Usage of the latest ES6 constructs and features
* Refactor the code as appropriate, making sure it follows best practices
Removal:
These features must be removed completely from the codebase:
* HTTP Auth configuration and code
* Image proxy configuration and code
Update Javascript to ES6 / Airbnb standards
We want to update the Javascript to ES6 and use the linters from Airbnb:
https://github.com/airbnb/javascript
Goal
The goal from this challenge is to transform the existing code into a more modern, formalised codebase that takes advantage of ES6 and new functionality available in Javascript and the latest browsers. A challenge after this one will look at performance of the codebase, so it's important that we start from a good, stable base layer of code that's been cleaned up and makes sense.Note: We don't want to see any new bugs introduced, so please make sure the new code works the same way as the old code.
Deployment
Currently, the code is just deployed to Heroku by pushing the latest updates from Git. Heroku handles all the webpack and other packaging steps. This needs to remain in place. All configuration is done through environmental variables set on Heroku. Samples will be provided in the forum.Submission
Your submission must include a patch file against the Git repository commit hash 206b7dc31750f539dfa45641c71dab5e0b5f5e61. Details on getting access to the Git repo can be found in the forum.Your deployment guide must cover how to properly apply the patch.