How can I get started building an LTI external application?

Jump to solution
Community Novice

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.

1 Solution
Community Champion

73396fae490e357703ca9512472ce424b31700771b9369e148624b3b9d5ecb8d I'll do my best to provide some initial answers.

1. Yes, LTI applications are free standing app, completely separate from the LMS.  The LMS will send a launch request and pass the user credentials and other information so the LTI app knows how to pass info back to the LMS.  The Roll Call app is a good example of this.

2. Yes, LTI apps are deployed separately, and run outside of the LMS eco-system, on their own servers, and are not managed by the LMS team.

3. LTI apps can interact with the LMS through the API, and through the LTI links that are passed to the LTI app through the launch request.  In simple terms, an example would be an LTI provider, like Pearson, who provides a digital textbook with associated assignemnts.  Pearson will post grades for the assignments back to the LMS gradebook.

4. The creator and host of the LTI app is responsible for their own data, not the LMS platform.

5. You will need to register your app with the LMS platform.  This can be done by an LMS admin using an XML file, and typically requires a unique key and shared secret.  I'm not sure what you mean by "client", there are ways to control access to the LTI app,  you will need to investigate configuration options as you learn more about LTI.

6. I have posted a three part blog on just that, connecting a "hello world" app using LTI.  You can read the first post here:

You may not be using .NET, but the concepts apply to whatever technology you choose to use.

7. You should take a look at the IMS Global website, they define the standards.

I have also posted some helpful LTI links here:

I hope this helps get you started.

View solution in original post