Skip to content
Anderson Pierre Cardoso edited this page Mar 19, 2018 · 12 revisions

LTI app for integrating Canvas with Google Drive files

LTI app spec:

  • Open Source (GPL v3)

  • Following the LTI specification (http://www.imsglobal.org/activity/learning-tools-interoperability)

  • Ruby app, probably in Sinatra or Rails

  • Key Features:

    • [educator] link/embed gdrive files into course content
    • [student] send gdrive files as part of assignment
  • configuration

    • /config.xml => [GET] return the cartridge XML config
  • manage consumer key/secret

    • /credentials/new => [GET] shows a form button to generate the key/secret

      • option: Subdomain restriction (e.g. only allow Google logins from aps.edu)
      • option: Course nav folder - which Drive folder to load by default when first navigating to the app (OBS: that change per user, or not?)
    • /credentials/ => [POST] create the key/secret and show a result page with both

  • Launch URL => [POST] /lti/course-navigation

  • Extensions:

    • assignment_selection => [POST] /lti/assignment-selection (type: ContentItemSelectionRequest)
    • course_navigation => [POST] /lti/course-navigation (same as launch url)
    • editor_button => [POST] /lti/editor-selection (type: ContentItemSelectionRequest)
      • icon url: /assets/gdrive-icon
      • modal frame 600x700
    • homework_submission => [POST] /lti/homework-selection (type: ContentItemSelectionRequest)
    • link_selection => [POST] /lti/content-selection (type: ContentItemSelectionRequest)
      • modal frame 600x700
  • Embed iframe => [GET] /lti/content-view/<id?>

Timeline

all estimates here (in parenthesis) are rough guesses, so we can have an overall picture.

  • read canvas docs and understand lti specs (8h)
  • draft solution and estimate (4h)
  • have a working local canvas instance (6h)
  • configuration XML (2h)
  • load lti app on canvas (2h)
  • have a simple initial lti service for MVP (2h)
  • have a root endpoint (1h)
  • setup repo and bootstrap app (config linters, hooks, test suite, CI, etc) (4h)
  • manage consumer key/secret (6h)
  • auhtorize LTI requests (6h)
  • handle launch url (2h)
  • oauth with google (6h)
  • render navigation frame (12h)
  • editor button (6h)
  • link file (4h)
  • embed file (8h)
  • handle assignments (8h)
  • tests (12h)
  • search (6h)
  • documentation (6h)

Useful info

Clone this wiki locally