Dependencies

NPM

NPM is required to install Grunt, Grunt packages, Less, and TypeScript. See package.json in the Web project for configurations.

Bower

Bower is required to add Bootstrap, JQuery, and React. See bower.json in the Web project for configurations.

Grunt

Grunt is used to perform tasks with Visual Studio events as well as with build events. Grunt:

  • Compiles TypeScript files into JavaScript on save and build
  • Compiles Less CSS into CSS on save and build
  • Minifies CSS on build
  • Removes temp files

For Grunt configurations, see Gruntfile.js in the Web project.

External Dependencies

Docker

Docker is used to simplify and unify the build and runtime environment for the application.

See Dockerfile in the Web project for Docker configurations. The Web project also contains a .dockerignore.

TravisCI

TravisCI is used to verify the state of the application every time a developer pushes to a branch in the GitHub repository. It first installs project dependencies, pulls and builds the project, and then runs tests.

After the previous steps succeed, Travis builds a Docker image with the application and pushes it to AWS.

On the dev, stage, and master branches, Travis triggers a build process in AWS that combines the content package, hosted in an S3 bucket, with the application Docker image and performs a rolling update to the running versions of these branches.

See the travis.yml file in the root directory project for configurations.

Content package

The content for the site is provided by a content package supplied by the Smarter Balanced Assessment Consortium. It consists of XML files that describe the test question items (the “content package”).

Currently, content packages can be accessed at ftp://ftps.smarterbalanced.org/~sbacpublic/Public/PracticeAndTrainingTests/.