Tsugi Admin, Developer, and Management Console (pls join the dev list)
PHP JavaScript HTML
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
_files Moving towards a file system. Nov 15, 2013
admin Add last purge time Aug 18, 2018
api Experimenting with socketio Jul 24, 2018
badges Remove the "must use https" in case we are behind a proxy Nov 11, 2017
cc Use the master i18n where appropriate Jan 3, 2018
cron Move to cal_event and Caliper 1.1 Aug 3, 2018
dev Add $CFG->fallbacklocale Jan 16, 2018
gclass Fix SQL Syntax error in Google Classroom Support Jul 7, 2018
locale Add $CFG->fallbacklocale Jan 16, 2018
lti Fix using EduAppCenter Jul 27, 2018
mod Moce mod into the repo with the advend of auto install Jan 5, 2017
settings Suggest not to use LTI 2.x Aug 1, 2018
store Allow admin to see past tool filters. Mar 22, 2018
util Add the util bits Dec 29, 2017
vendor Fix from Martin L. for URL Base-64 decode Aug 20, 2018
.gitignore Add Koseu, Twig, and Silex Mar 19, 2017
.gitmodules Undo submodule experiment in preparation for subtrees. Sep 30, 2015
.htaccess Remove the "must use https" in case we are behind a proxy Nov 11, 2017
LICENSE Initial commit Sep 15, 2013
README.md Fix broken "Install GIT" hyperlink in README.md Aug 10, 2017
README_AWS.md AWS docs - emerging Nov 11, 2017
README_UBUNTU.md Notes Jun 22, 2017
SETUP.txt Spaces (at the end of lines) are the final frontier. Aug 1, 2014
TODO.txt Add a todo. Sep 19, 2014
about-dev.php The big move to REST URLs. May 17, 2017
about.php The big move to REST URLs. May 17, 2017
composer.json Fix from Martin L. for URL Base-64 decode Aug 20, 2018
composer.lock Fix from Martin L. for URL Base-64 decode Aug 20, 2018
config-dist.php Remove the defaults - back to unset Aug 7, 2018
discuss.php Tweak discussion Aug 31, 2016
favicon.ico Tweak Nov 21, 2015
index.php The big move to REST URLs. May 17, 2017
login.php Use the master i18n where appropriate Jan 3, 2018
logout.php The big move to REST URLs. May 17, 2017
top.php Tweaks. May 9, 2017
tsugi.php Make some routes depend on session. Aug 1, 2018
upgrading-dist.php Spaces (at the end of lines) are the final frontier. Aug 1, 2014


TSUGI - A Framework for Building Interoperable Learning Tools

Apereo Incubating badge

Tsugi is a multi-tenant scalable LTI library and tool hosting environment. It is intended to make it more tractable to implement the Application Store that we will need for the Next Generation Digital Learning Environment.

This repository is the Tsugi Administration, Management, and Developer Console. This code also implements an LTI 2.0 Provider, CASA App Store, and IMS ContentItem App store. Any Tsugi tool (including those written in Java and NodeJS) needs to have this software installed and configured as pre-requisite. Perhaps someday we will build Java and/or NodeJS versions of the console - but for now we just use the PHP console for applications written in any language.

While earlier versions of this repository included a set of modules, examples, and even exercises, as we move towards a 1.0 release of Tsugi, these elements are now moved to separate repositories (see below).



  • Check the code out from GitHub and put it in a directory where your web server can read it

      git clone https://github.com/tsugiproject/tsugi.git
  • Create a database and get authentication info for the database

      GRANT ALL ON tsugi.* TO 'ltiuser'@'localhost' IDENTIFIED BY 'ltipassword';
      GRANT ALL ON tsugi.* TO 'ltiuser'@'' IDENTIFIED BY 'ltipassword';
  • Copy the file config-dist.php to config.php and edit the file to put in the appropriate values. Make sure to change all the secrets. If you are just getting started turn on DEVELOPER mode so you can launch the tools easily. Each of the fields is documented in the config-dist.php file - here is some additional documentation on the configuration values:


  • Go to the main page, and click on "Admin" to make all the database tables - you will need the Admin password you just put into config.php If all goes well, lots of tables should be created. You can run upgrade.php more than once - it will automatically detect that it has been run.

Adding Some Tools

If you are just exploring Tsugi, or doing a developer bootcamp, you can add some tools from some of the other repositories:

  • If you set the $CFG->install_path and go into the Admin interface, you can use "Manage Installed Modules" to install tools from Tsugi Tools

  • Tsugi Module Sample Code - These are relatively short bits of code that you can look at as you write your own Tsugi Module.

  • Tsugi Developer Exercises - This is a set of exercises of increasing difficulty suitable for a class or workshop. Working solutions are provided online. Source code for working solutions is only available to inctructors that contact Dr. Chuck.

  • Sample Tsugi Module - Copy this if you want to start a fresh Tsugi Module from scratch. If you are building a new tool from scratch, you should build it as a "Tsugi Module" following all of the Tsugi style guidance, using the Tsugi browser environment, and making full use of the Tsugi framework. This repository contains a basic "Tsugi Module" you can use as a starting point.

  • Sample Tsugi-Enabled Application - You can also use Tsugi as a library and add it to a few places in an existing application. This repository contains sample code showing how to use Tsugi as a library in an existing application.

Each of these repositories contain instructions on how to install, configure, and hook each of these applications into your Tsugi instance. Once you install a new module or modules, you will need to re-run the Admin / Database Upgrade process to create the new tables required by the new applications.

We have a short document on how to check out all of the above tools and set up the configuration for them.

Developer Documentation

You can view some of the developer documentation for the PHP version of Tsugi at:

Other Repositories

The Tsugi Administration Console and Tsugi Modules / Applications depend on two other repositories:

  • Tsugi PHP Library - This is the code for the Tsugi run-time used by the Tsugi administration console and Tsugi PHP Modules and Applications.

  • Tsugi Static Content - This repository contains JavaScript, images, and CSS files shared across the various Tsugi implementations (PHP, Java, and NodeJS). The static content is available at http://www.dr-chuck.net/tsugi-static/ - if you like you can check out your own copy of this repo locally or for your production environment and point your Tsugi config.php at your own copy of the library.

Other Languages

While the PHP Implementation of Tsugi is the most well developed, there are additional Tsugi implementations being developed:

  • Tsugi Java This is a reasonably complete implementation of the Tsugi run-time in Java. It shares low level IMS libraries with Sakai and is ready for production use.

  • Tsugi NodeJS - This is early pre-emergent code.

Tsugi Developer List

Please join the Tsugi Developer List so you can stay up to date with the progress regarding Tsugi.