Showing results for 
Show  only  | Search instead for 
Did you mean: 
Community Member

How can I get started building an LTI external application?

Hello, I am a freelance web developer tasked with adding on some additional functionality to an existing Canvas LMS system. It seems the way to do this is to build and integrate an external LTI application, and I would likely do this in rails. While I have found the documentation on this and the course on building LTI applications, I haven't been able to find anything that clearly explains on a basic level what an LTI app does functionally, how it is structured, and how it interacts with the LMS system. I have the following questions and would greatly appreciate any help I can get getting started.

1. My understanding is that LTI applications are separate free standing applications that are run within the LMS system and share authentication. Is this correct? Several of the following questions are based on this assumption so please correct me if I am wrong and help me understand what LTI applications functionally do.

2. If LTI apps are in fact free standing applications, are they then deployed separately on their own servers with no particular integration with the Canvas LMS system to begin with?

3. If LTI applications are deployed separately, and if they are in fact run from within the LMS system, how do they interact with the LMS system while they are running? In other words, is there some direct interaction between the application and the LMS system, or is it simply rendered within a particular classroom with access to the user's data, say via an iframe?

4. If LTI applications are deployed separately, and if they are in fact run from within the LMS system, is the application, or the LMS system responsible for handling the data for the application? If there is a database for the LTI application, how should that be set up and structured to work with the LMS system? If all data is handled by the LMS system, is it possible to create and store specialized data for the LTI application?

5. What is the protocol for getting an application to be accessible and eventually integrated to a particular LMS system? Is there anything that needs to be arranged with my client or the CanvasLMS company? If I just want one client to be able to use my application, is this possible? (In this case client refers to the person I'm working with rather than the front end, sorry for the confusion)

6. What is the best way is to set up a hello world type application to get myself started? Eventually, I would like to have a test environment set up to continually update and test out my application as I build it. Is it feasible to set up a LSM system on my local machine with a decent knowledge of the rails framework and use this in the development of my LTI application, or is there some other way I should go about this?

6. Are there any specifics I should know about the particular LMS system that I would like to work with in order to be able to develop my application in the appropriate way?

Thanks in advanced. I will likely have some follow up questions, but right now I am just trying to understand the fundamentals, again I will greatly appreciate any help I can get here.

Labels (1)
2 Replies
Community Champion

These slides from my friends at Harvard University have filled in a lot of the blanks for me as a technical director making LTI "build or buy" decisions. Based on my experience, I'll suggest some possible answers to your questions:

  1. LTI applications are free-standing; however, they're run outside the LMS system. Regarding sharing authentication, it's more that the LMS sends the LTI tool authentication information for the logged-in user through a secure signed form post.
  2. Yes, that is correct.
  3. Today, the majority of LTI applications are like your last sentence:

    or is it simply rendered within a particular classroom with access to the user's data, say via an iframe?

    Canvas pioneered the notion of LTI placements the most common of which is within a course. (The next version of LTI should open up some additional interaction possibilities through message-passing between the LMS and tool.)
  4. The application is responsible for storing and managing data it receives from the secure form post. Developers are free to design how that works, choose databases, etc.
  5. If your application supports the LTI standard, that itself is the bulk of the protocol -- especially the key and secret, which are (in LTI 1.1) the main way you limit use of a tool to pre-arranged institutions/situations. Each LMS connects to LTI tools differently, normally with no vendor interaction required. Here's one of the more commonly used ways to connect an external tool to Canvas: How do I configure an external app for a course using a URL?
  6. Probably the simplest "Hello World" for Ruby on Rails would be to try the Ruby gem provided by Instructure, up to the point of the Tool Provider instructions:
    GitHub - instructure/ims-lti: A Ruby library to help implement IMS LTI tool consumers and providersDr. Chuck Severance's examples have been helpful to our third-party developers:
    Dr. Chuck's Blog  » Blog Archive  » How to Build a Rich / Non-Trivial IMS LTI 1.1 Provider
Community Team
Community Team

73396fae490e357703ca9512472ce424b31700771b9369e148624b3b9d5ecb8d​, since you posted the same prompt twice, we now have two separate conversations underway. All of the input is valuable. In the interest of keeping all commentary unified under a single discussion thread, I'm providing a link to the parallel discussion taking place at How can I get started building an LTI external application?

(Thanks to  @garth ​ for pointing this out and linking to here from the other discussion!)