Quick Check is an LTI 1.3 (Learning Tools Interoperability) tool for creating formative assessments inline with course content in Canvas. Quick Check is best used for frequent, low-stakes assessments. Students receive instant feedback on their responses and, optionally, automatic grading. Instructors can review detailed student results and analytics. Quick Check was built by eLearning Design and Services at Indiana University, in response to faculty need for a robust formative assessment tool.
This application was built primarily for use by faculty, staff, and students at Indiana University, and this will continue to be our main priority. Investing the resources necessary to ensure Quick Check meets the use cases of other institutions falls outside the scope of this project. The decision was made to release this tool as an open source project so that it might benefit other institutions with a similar instructional need. Ensuring that the tool works for every institution's specific hosting setup or instructional use case is not the responsibility of this project's maintainers. Although the project maintainers will do their best to respond to questions and issues, it may not always be possible to guarantee a response. We appreciate your interest in the project and hope that you understand our resources are limited. Thank you.
The application can be run within a docker container or locally in a LAMP environment. Regardless of setup, the application will rely on an external mysql database, and the following steps should be taken first:
- Copy the .example.env file in the root directory to a new file called .env.docker_local
- Enter configuration information in the .env file, such as DB access creds, but wait to fill in
APP_KEY, which will be generated later. Note that docker-compose will launch its own mysql container and you can set new credentials as you see fit in the env file. - Docker for Mac/Windows should be installed.
- Make sure that Docker for Mac/Windows is running. To build the image,
cdto the directory of the app on your local machine and run:docker-compose up --build. In the future, the--buildflag can be omitted to run the app without building. - One-time setup is required for migrating and seeding the database. Run the following command separately:
docker-compose exec quickcheck php artisan migrate --seed - The application should be ready and available at localhost:8000. Changes to your local code (either back-end or front-end) will be reflected in the app for local development purposes. For production, do not use the docker-compose functionality, and instead incorporate only the Dockerfile in your build pipeline for a production-ready image.
A php.ini file is located in resources/php.ini, which is copied into the docker container. Additional ini setup can be added to that file to suit additional configuration needs. An .htaccess file is located in the public folder for additional configuration.
If installing locally, PHP >= 8.2 is required, as is Composer. For front-end dependencies, node/npm is required.
- In the root directory, run:
composer installto install Laravel PHP dependencies - Run
php artisan key:generateto generate an app key - Run
php artisan migrate --seedto run database migrations/seeds
- Install dependencies with
npm install(run at the root of the repo) - The angular CLI is required to compile the scripts/styles. To install:
npm install -g @angular/cli - To build the scripts for local testing:
npm run build - To build the scripts for production use:
npm run build:prod
- Run
php artisan servein the app root to fire up a local server. - To use the app locally, enter the url home page in your browser (the default is http://localhost:8000 but can be altered in the .env file).
- LTI-specific functionality, such as viewing student results, is not available locally. The application must be installed in a secure https environment and installed as an LTI tool in Canvas for all functionality to be available.
On the production server, please ensure that there is a new .env file with configuration information that is specific to the production environment. It is best practice to not sync the local .env file to the production server, because the configuration values will be different depending on the environment.
Front-end and back-end dependencies should be installed, and database migrations/seeding on the production database should be initialized. Note that for running migrations or custom artisan commands, a separate entrypoint script has been created for one-off Docker tasks. Examples:
Migration CMD ("--seed" is optional): ["/usr/local/bin/migrate_entrypoint.sh", "--seed"]
Artisan CMD: ["/usr/local/bin/artisan_entrypoint.sh", "config:cache"]
Hosting should be configured to point the application root URL to the "public" directory in the application. This is common practice for Laravel applications. If this step is not completed, and the "public" directory is visible in the URL, the app may not function properly.
The application must be served over a secure https connection in order to function as an LTI tool. See the next section on how to configure and install Quick Check in your Canvas instance.
First, generate a JWK using the options:
- RSA
- Key Size: 2048
- Key Use: Signature
- Algorithm: RS256
- Key ID: you have the option to specify a value or select a pre-existing option to generate a unique value
In the .env file, insert values for LTI_JWK_KID and LTI_JWK_N based on the output values. These are used to dynamically generate the JWK when installing the tool in Canvas.
Next, generate a public and private key by copying and pasting the JWK public and private keypair generated in the previous step into the "RSA key" box near the top of the page. For both public and private key, select the option of "PEM (PKCS#8)" and copy and paste the values into the .env for LTI_PUBLIC_KEY and LTI_PRIVATE_KEY respectively. Ensure that the line breaks remain the same, as they must retain the same form to be considered valid.
To install the app in Canvas:
- In the admin section of the root account, go to the Developer Keys section, add a new developer key, and select "LTI key" as the type.
- Select "Enter URL" as the method.
- Under "JSON URL" enter the app endpoint at
/lticonfigto generate the JSON config; example: https://quickcheck.institution.edu/lticonfig - Under "Redirect URIs" enter the following values, substituting [app url] for your hosted app's url:
- [app url]/index.php/assessment
- [app url]/index.php/home
- [app url]/index.php/select
- [app url]/index.php/logininitiations
- Save the developer key and after it is installed, look under the "details" section of the listed key. Enter the numerical value listed in the .env value for
LTI_CLIENT_ID. Click on "Show Key" and copy and paste the value listed in the .env value forLTI_CLIENT_SECRET. - In either the root account or the subaccount(s) of your choosing, the tool can be installed by going to "Settings" in the admin panel of the account, then "Apps" and then "View App Configurations" and clicking the "+ App" button. Under "Configuration Type" select "By Client ID" and then copy and paste the
LTI_CLIENT_IDvalue.
The tool is hidden by default in the left navigation. Make the application visible in the left nav to access it. Quick Checks can still be embedded and taken by students even if the tool remains hidden in the left nav. The left nav link is used for creating quick checks and reviewing results.
Quick Check relies on the Canvas API to function properly. An admin token is required, so that information can be retrieved across multiple courses. The following is a list of the primary uses for the Canvas API:
- Get an assignment
- Get a course
- Get course groups
- Get an assignment's submissions
- Get a user/users
Canvas API functionality is contained within the CanvasAPI class, which can be found in app/Classes/ExternalData/CanvasAPI.php.
Required environments are "local" and "prod" but there are others that may also be defined. A "dev" environment can be created for development, and a "preview" environment can be created for testing out new functionality with faculty before moving to production. Updating the .env file in each new environment is required for these additional environments to function properly.
Whenever a new version of the app is released, the following commands should be run to compile the updated assets:
- Run
composer dump-autoloadin the app root to update the autoloaded classmap - Run
php artisan migrateto run new database migrations, if any were added in the release - In public/assets, run
ng build --prodto compile front-end assets
Instructors are allowed to upload images to embed in quick checks. By default, the storage driver is "local" and is stored on the local disk in a public directory. The storage driver can also be set to "s3" for AWS S3 cloud storage. If using the local driver, a public directory must be symlinked with the command php artisan storage:link before users can upload public images.
Quick Check is open-sourced software licensed under the Educational Community License, Version 2.0.
Copyright 2018 The Trustees of Indiana University Licensed under the Educational Community License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.osedu.org/licenses/ECL-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.