Skip to content

code-for-canada/project-thundercat

 
 

Repository files navigation

Project ThunderCAT

The project now moved over to Gitlab.com : https://gitlab.com/thundercat-transition/project-thundercat

Please join us there!

This application is a collaboration between Code for Canada (Cohort 2 Fellowship) and the Public Service Commission of Canada (PSC). It is called the Competency Assessment Tool (CAT) or Outil d’évaluation des compétences (OEC), and is a platform to host the Electronic Managerial Inbox (eMIB), as assessment developed by the Public Service Commission to assess managerial candidates in the federal government. For more about the project please visit the project updates blog.

Application screenshot

This application introduced a new tech stack for the PSC. It has a ReactJS front-end, Django back-end, and PostgreSQL DB. It uses Docker containers and Nginx as a web proxy.

Tech stack diagram

Quick start

  1. Follow our setup guide to configure your workstation.
  2. Clone the repository using git.
  3. docker-compose up to build the application if you have not done so already
  4. Open your browser to http://localhost:80/.

To see a list of all build commands, run docker from the repository root or see our notes-on-docker.

Contributing

All changes to the application (no matter how small) require a pull request, with a filled out description (there's a template), passing CI runs, and at least one approval code review approval from a team member. Sometimes a designer or PM review is also required.

Want to contribute? Please email Caley Brock, the Code for Canada Development Fellow at the Public Service Commission, at caley@codefor.ca.

Note: After August 2019, this project will transfer ownership to the PSC, and the repository under code-for-canada with no longer be updated.

What's in this repo?

Here's a quick overview of the major landmarks:

The Django application that manages data and requests through REST APIs. Urls starting with /api/ are sent to the backend. A tool called Swagger UI has been introduced to this project in order to see and manipulate the available APIs that the backend supports.

The backend is responsible for the direct interaction with PostgreSQL, data model definition, migrations, and API logic for

  • user management (candidates and admins) and sessions
  • test definitions (ie versions of test type eMIB) and test security
  • user test results

The ReactJS application that users will see. It uses the Airbnb Styleguide. It will get built into a static package that we serve through nginx in production. We are using a combination of React-Bootstrap, Aurora Design System, and custom PSC-specific styles for our components. It is localized into French and English and is in development to meet accessibility standards.

The frontend includes components, logic, and API interaction for:

  • a home page for logged in an logged out users (/)
  • a status page (/status)
  • a public facing sample eMIB test (/emib-sample)
  • tools for candidates and administrators in real test sessions (/dashboard)

Documentation

  • SETUP: Instructions to get everything up and running.
  • TESTING: How to be sure nothing broke.
  • LICENSE: MIT
  • Docker Setup - diagrams explaining the container setup
  • There are many more topical guides in the docs folder.
  • In addition, several sections of the repository have their own documentation:

Technical requirements

This product was built to be capable of running in the following environment, where candidates are tested.

  • Internet Explorer 10 or later
  • JavaScript enabled
  • Secure Socket Layer (SSL) encryption enabled
  • Screen resolution must be set to a minimum of 1024 x 768
  • Full-screen mode enabled
  • Copy + paste functionality enabled
  • Accessibility functionality available to users
    • IE Internet Options > Colours enabled to users
    • IE Internet Options > Fonts enabled to users
    • IE Internet Options > Accessibility enabled to users

CI Tools

Each pull request runs all tests via Travis, scans all packages via Snyk, and deploys the frontend to a review app via Heroku.

Note: Heroku disabled as of June 2019.

CI/CD Diagram

Snyk Vulnerabilities

frontend/package.json -> Known Vulnerabilities

backend/requirements.txt -> Known Vulnerabilities

About

Code for Canada + PSC partnership project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 42.6%
  • JavaScript 37.4%
  • CSS 19.4%
  • Other 0.6%