I've written weeknotes internally for some time. These notes rarely see the light of day but there's inevitably some nuggets of semi-interesting and/or tediously technical minutia that might be interesting to share. That leads us here - Weeknotes for the week of June 10-16th.
This week was focused on the wrap up of an interactive kiosk installation for an event in Singapore. The actual event only runs for a few days, so a focus has been on portability and minimising the required hardware on-site.
Shameless plug - We build these types of interactive installations and experimental events for customers worldwide, and we're really good at it. You should check it out : https://dnb-atlas.com/
The main application running on the kiosks is a VueJS web app, installed as a PWA on the individual tablets. This pairs up to web-views running on a media server, which outputs to a large LED wall.
In this case there are multiple tablets on site, and they will be hot swapped out during the event.
During the actual event - the only visible UI on the tablets is the kiosk application, so we needed an easy way to pro-actively debug and check the state of all the devices without having to physically check each one by one.
For that we built up a quick fleet management system within the app. Each instance of the web app has a built in heartbeat that's emitted via a web-socket to our management system, and exposes a few helper utility functions.
Instances send a heartbeat every 5 seconds with a payload that looked something like:
{
msg: 'heartbeat',
id: '{instance_id}',
state: '{current_view}'
meta: { ... }
}
The tablets running the kiosk application run over wifi, and aren't plugged in during the event. We're running 2 full sets of tablets, one on the show floor, while the other set is charged behind the scenes.