April 2019 - January 2022 (2 years and 9 months)
London, United Kingdom
Redesigned and replaced the existing backend, frontend and device software for large screen installations. Achieved goal of transferring as much as possible to AWS towards a full serverless solution to enable scaling up as more clients commit to the system.
Lead Duties
Alongside the design and implementation part of my job I was also mentoring and managing four mid to senior developers.
AWS
CDK, IoT Core, DynamoDB, S3, Cloudfront, Route53, Cloudformation, Cloudwatch, MQTT, SQS, Ec2, RDS, Lambda, IAM, Cognito (SAML, Google), Code services.
Highlights:
- Designed and implemented the AWS infrastructure for the full system.
- Developed a CDK app for all resources allowing various configurations according to the target environment account and client specs. E.g. The CDK app bundled all lambdas, created an Ec2 + RDS instance with a pre-made Drupal server image, created and configured Cognito with Google/SAML and set up cloudfront for client CMS builds along with IP whitelisting.
- Designed a single table solution for DynamoDB allowing very fast access to the required data.
- Publishing lambda that would gather assets used in the CMS, package them into a zip and push that data securely to IoT devices.
- Online / Offline lambda which would publish a message to a client's Slack channel when a machine's connection changed.
- Each device is a Ubuntu machine plugged into many large 4k screens. The device connects to AWS via the IoT Core and securely fetches client authored data for the screens to show (videos, text, animation, images and web content). I developed a NodeJS service for the hardware that handled the secure connection to the IoT Core allowing role access to S3, MQTT to CMS, DynamoDB and other services. This code also allowed us to show in the client CMS when a machine was online / offline and what content was playing.
SaaS CMS Frontend
Typescript, AWS SDK, MQTT, React, Nx, Material UI, Docker, Webpack, Konva, Json Schema
Highlights:
- Allows users to create media layouts similar to Photoshop layering text, images, videos and gradients using HTML5 canvas.
- Clients can view the status of all of their devices in real time.
- Allows a video stream directly from the device hardware via an Ec2 server to an embedded video player.
- Secure sign in with AWS Cognito via company Google or SAML accounts.
- Content can be published securely from the CMS to devices in the US and displayed on their large lobby screens.