Tech Stack Proposal

This is a copy of the tech stack proposal used for the partnership project with Code for Canada and the Public Service Commission.


Summary

New technology stack proposed for a new web application to host the eMIB assessment:

  • Client side - ReactJS
  • Server side - Python Django, Nginx on Linux, PostgreSQL Community

Background

The Code for Canada fellowship team has been embedded into the Public Service Commission to drive product development for a digital test that more accurately emulates the form of modern management environment and meets applicant expectations about assessment practices.

eMIB

The eMIB or "Electronic Managerial Inbox" is an occupational test designed to assess managerial skills by mimicking a manager's email inbox and allowing them to respond to emails, create a task list, and explain their reasons for action.

The eMIB has 4 unique requirements:

  • Task oriented, open ended sets of responses
  • Scored by humans, not machines
  • Modern accessible standards met
  • Browser based requirement

These requirements make it incompatible with existing test taking environments and therefore the team is proposing developing a new application for hosting open ended tests.

A new application brings the opportunity to use a different technology stack, while still interfacing with other existing applications using new and existing APIs.

Proposed Stack

The following is the proposed technology stack to build an open-ended testing platform that would host the eMIB.

Client-side

ReactJS is a modern frontend JavaScript framework made to easily build, maintain, and test a complex user interface. It's high use (in industry and government) means great training, docs, unit testing, accessibility and support.

  • Language : JavaScript - a core technology of the World Wide Web
  • Framework : ReactJS - a JavaScript library for building user interfaces
  • Version : React 16.6.x, JavaScript ES6
  • Unit testing : Enzyme is a testing library for ReactJS components. Pa11y for accessibility testing.
  • Accessibility : docs have examples and support.
  • Component library : GCCollab has a design library that we can customize and use.

Other required tech

  • IDE - VSCode with React extensions
  • Npm (Node Package Manager) - manages Javascript libraries
  • Git and GitHub - for version control

Server-side

Application

Python Django is consistently referenced as a top web framework, and is used widely in industry and government. Python is simple while being robust, versatile and future proof.

  • Language : Python - an interpreted high-level programming language for general-purpose programming.
  • Framework : Django - the web framework for perfectionists with deadlines.
  • Version : Python 3.6.x, Django 2.1.x
  • Unit testing : unittest is the standard and coverage.py can measure code coverage

Other required tech

  • IDE - VSCode with Python extension
  • Docker - to manage setup
  • Git and GitHub - for version control

Server

Django applications can be run on Docker on a Linux server, which is available from SSC through PSC's Middleware team.

Nginx server will use uWSGI.

The goal is to make a product that is cloud ready, even if that does not happen in our timeline. We want to make it possible to package the application within Docker Containers in the future and deploy them in the cloud at a later stage.

Database

The PostgreSQL 11 Community is a top open-source relational database and is an approved technology for the PSC and is in line with the future goals of the department.

Transition and training

All new projects will be evaluated with the current framework. The most appropriate stack will be used for the specific project, for every project going forward.

A modern tech provides opportunity for recruiting from different candidate pools and for current staff career growth through training.

Written on December 18, 2018, by Caley Brock