Shawn Genlloud's Portfolio

Jackpots Product

Warning!

Due to signed non-disclosure agreements, no intellectual property can be disclosed.

My Contribution

I was picked as part of a task team, to develop a solution within 6 weeks, that could wrap any game and turn it into a jackpots game. From there I became the lone product owner, managing everything from sourcing business requirements, through the entire product life cycle. (supporting IE11, QQ, UC, FF mobile and many more)

Product Description

This solution was created to wrap any game and run jackpots on top of it, without the games having to be adapted. This was mostly to drive traffic outside of peak gameplay times and push other game genres into the jackpot exclusive arena.

To achieve this, I took native web components, using the micro-frontends architecture. I created a simple dotnet MVC application, which served this within, in order to easily hijack the routing and inject resources from the backend. The client components wrapped the game in an iframe, with associated translations and currency formatting. Dependant upon the configuration and launch parameters, my server code also injected a custom template file. These templates were able to be interpreted by the components, which then got the jackpots via requests to a centralised API maintained by another team and rendered that as the expected template theme. All of which is run through a finite-state machine, to ensure strict adherence to the defined requirement rules.

Templates

I created a web component driven templating system that hooks into custom events, in order to customise the vistual aspect of the jackpots.

Image Compression Service

In order to keep load times to a minimal, I developed a service for creating compressed clones of the original images of a given directory. These clones are the best quality, for each of the supported device resolutions.

Test Harness

In order for designers to customise their unique template, I developed a test harness. Which runs the jackpots client outside of the context of the main system. This was eventually used as the visualisation of the config system, to easily edit the templates from an external application.

Automation

In order to have complete trust in the system and templates, I created an automation solution, for end to end testing regression. I also created some tooling to aid QA, one of which being a public facing Chrome extension, to help update/create/delete querystring parameters.

DevOps Pipeline

Along with automation, I've included a fully custom build and deployments pipeline. With every merge/commit to the Master branch, the build runs both the client and server side tests, that I wrote with coverage reports for both. Once all tests have passed, the deployment of this NuGet package can be created. This pipeline has been built with safeguards between each deployment to the dev, testing, staging and finally production environments.

Quality & Documentation

To keep documentation and code comments from rotting over time, I placed within the build pipeline, scripts that run auto-docs to easily be consumed by less technical audiences. My manual documentation tends to be rather thorough, while maintaining layman's terminology. Albeit that I have admittedly gotten rusty on my XML skills, I try give single glance and to the point consumption of the information being portrayed.