Assignment Buster is a Slack App that helps students stay up-to-date with their coursework. Students are able to quickly access their Canvas assignments from the Assignment Buster App.
Ben Choe, Cody Davis, Dylan Ullrich, Katharine Swilley
- JavaScript
- Node.js
- Slack Bolt
- Axios
- dotenv
- ngrok
- Heroku
- Slack
- Canvas Instructure API
- Anton Putra - How to Build Slack Bot (Slack Bot Node JS Tutorial) Ep 1
- Horea Porutiu - Build your first Slack app using a manifest file
- Horea Porutiu - Build Your First Slack Bolt App: Setting Redirect URLs
- Horea Porutiu - Build Your First Slack Bolt App Pt 2: Custom Routes and Admin APIs:
- Horea Porutiu - Build your first Slack Bolt App Pt 3: OAuth & Storing User Credentials (w/ MongoDB)
- Canvas Instructure API Information
PORT
- The port you choose to run locally.
SLACK_SIGNING_SECRET
- HOW TO OBTAIN
SLACK_TOKEN
- HOW TO OBTAIN
CANVAS_TOKEN
- HOW TO OBTAIN
CANVAS_COURSE_ID
- Navigate to the Home of the course you would like to get information on. Note the number in the url after courses: https://canvas.instructure.com/courses/3333333
. In this instance the number is 3333333
, the number in the place of 333333
is your course ID.
You will need:
- A Slack workspace with permission to add apps to the workspace.
- ngrok for testing your bot locally.
- A deployment platform such as Heroku, if you decide to deploy elsewhere.
Steps:
- Clone Assignment Buster repository
- Create Slack workspace or utilize existing workspace that you have bot add permissions.
- Create a new App to add.
- Set proper permissions for bot, such as read permissions for channels and/or direct messages. NOTE: You will need to reinstall the bot to the workspace with any changes in permissions
- Host the bot locally with ngrok, or deploy to a service like Heroku.
- Enter the link from your deployment in the Event Subscriptions section, and register your slash commands with the same link in the Slash Commands section.
- Go to the Assignment Buster App in your Slack workspace, and try it out!
- Check assignments
/duetoday
- Check assignments
/upcoming
- Check assignments
/overdue
- Testing the app locally can be done with ngrok.
- Jest tests have been implemented, which can be run.
Working with the Canvas API and Slack presented some challenges.
- Canvas API limitations - without a developer key the API must be accessed by a student API key, which narrows the API endpoints available to us. In a production environment, one would never ask a user to input their API key. Rather an OAuth workflow process would authenticate the user.
- Heroku v AWS
- We attempted to host this app using serverless functions on AWS. Due to time and complexity, Heroku proved to be the best path forward to obtain MVP.
The steps we would take to deploy this app in a production environment include:
- Having Canvas Administrator access to issue a needed developer key
- Implementing an OAuth process to authenticate Canvas users in Slack
- Implement a Database to store user credential inputs from Slack.