Built from the ground up to host, manage, and judge events and competitions.



Indesign Media runs several awards throughout the year for different markets in the Design and Architecture space. When I joined Indesign they were using a basic ruby application that had been cloned several times to serve the different requirements of the various awards and events the company ran. When I joined, no one left in the company had any experience with ruby, or the inner workings of the codebase, making any modifications to the code difficult.

The differing requirements of the various awards led to a situation where the development team was maintaining several slightly different versions of the same old codebase, with inconsistent bugs and functionality between them.


After going through a new event launch with the existing infrastructure, I began drafting the required features for a new platform to cover all internal business requirements while leaving the path open for a future opening of the platform to third parties. All existing providers of competition-management platforms were very expensive and provided many features that Indesign did not need.

This draft evolved into a full technical specification detailing the list of features, architecture, recommended technology choices, and planned phases of development. This was shared with the other members of the development team for feedback and then passed on to the management and event stakeholders for approval.

With approval, the project began the initial phase of development: getting the project up to the requirements to replace the existing platform in time before the launch of an upcoming event.

Landing page for the Awardstack platform.


Awardstack built using Node.js and the Express framework. Node.js was chosen as it was a popular language with large community support making it easier for the development team to maintain the platform as time went on, was with JavaScript being a language most developers have a basic understanding of. During planning the framework choice was narrowed down to Koa and Express. Express was eventually decided upon due to the longer history of community support, as this platform will be expected to be used many years into the future.

PostgreSQL was used as the database, and Redis for session storage to make possible future load-balancing easier. The Knex.js library was used for querying the database and managing database migrations.

The complex user interface components use Vue.js to manage the UI state seamlessly for the user.

Awardstack is hosted on an Amazon AWS EC2 instance behind an Nginx reverse proxy to more performantly serve static assets and manage the TLS certificates.

Competition pricing management section of the Awardstack dashboard.

© 2018-2020 Christopher Muller