NODEJS / REACT / REDUX / SOCKET.IO / FIRESTORE / DOCKER / GOOGLE CLOUD
NZIPP Iris Awards Judging Admin & App
The Challenge
The New Zealand Institute of Professional Photography (NZIPP) run a live judging event each year where in excess of 1400 images are judged by 40 judges over 3 days. Their legacy system had become uneconomical to upgrade to suit their new requirements, as well as looking very dated being run on old technology that was unable to be ported to mobile devices. The collation of their results had recently been moved to Google Sheets, which was providing a stable base for the system, but it was not suitable for use by the judges, as well as being time consuming to set up each year.
The Honours team, who oversee the running of the awards, needed an admin system to prepare for the judging (including importing the entries/images that would be judged during the event), collate the results in real-time to enable them to run finals judging for 20+ sub-categories, and export the final results and images ready for a public exhibition during the event.
The judges required a reliable and intuitive system that they would be able to sit down and use at the live judging event with minimal training. The awards are run over long hours so a specific emphasis was placed on the system being easy on the eyes and with complete protection against user error.
With the recent move to 3 judging rooms, having 5 judges in each room, the system needed to be bullet-proof for the current awards as well as providing a solid platform which could handle future development.
The Solution
- Modern Dockerized Node.js Server providing RESTful API for the admin and Socket.IO connection for the judging consoles
- Hosted on Google Compute Engine VM Instances
- Google Firestore + Cloud Storage for data/image storage
- Redis caching of results + Bull Queue for processing of images and creation of judging sheets
- Judging Application built as a React Web App – using Socket.IO for reliable, real-time feedback from the server
- Admininstration Dashboard built as a React Web App – using Redux Toolkit (RTK Query)