Skip to content

perclms/percolatelms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Percolate LMS Logo

Percolate LMS

Percolate is a Learning Management System with the following features:

  • Native course builder

  • Multi-tenancy (optional)

  • Discussions (comment boards)

  • Tag-based organization and creative use of tags

  • RESTful API with HATEOAS and JSON Web Token authentication

  • PDF certificate generation

Requirements

Percolate uses the following technologies and libraries:

  • API "backend" written in PHP

  • UI "frontend" written in JavaScript

    • Mithril, a tiny framework for Single-Page Applications

    • Moment.js for date and time manipulation

    • Ramda for "functional-style" utilities

    • Sortable for drag-n-drop lists (specifically Percolate’s learning paths)

  • Relational database targets PostgreSQL

  • The "build" system is a simple shell script which "minifies" (with JSMin) and then concatenates the JavaScript UI into a bundle.js file.

Installation

High-level overview

Percolate aims to be flexible while using as few unique concepts as possible. Much of this is achieved with the pervasive use of tags.

Multi-tenancy

The database contains a PostgreSQL 'schema' for each LMS tenant which gives complete isolation between tenants.

See db/master.sql.

Tenants are looked up by one or more hostnames (think "domain name": example.com, lms1.example.org, lms2.example.org, etc.).

If you prefer, you can create a single tenant and treat Percolate as a single instance, ignoring the multi-tenancy aspect entirely.

Database elements

The database stores these basic elements:

  • file

  • person

  • content

  • enrollment rules (erules)

  • records

  • comments (for discussions)

  • config (tenant-specific system settings)

For the complete story, see db/tenant.sql.

Types of content

There are four types of content:

  • SCORM - the standard e-learning package uploaded to the LMS in a .zip file

  • Content Builder or just "content" - the native content type in Percolate which is composed of pages containing images, videos, audio, quizzes, file attachments, etc.

  • Discussions - small forum-like discussion boards

  • Learning Paths - lists of other content put into specific order, may be nested

When a person launches a content item, a record is created or updated with the launch time, launch count, etc. All content types have the same basic records, even discussions. Other types such as SCORM and those made with the Content Builder can record much more information.

Tags

People may be grouped and organized by tags. Percolate LMS Administrators are simply people with the special $admin system tag. An initial administrator account is created for each new tenant.

Content is likewise organized by tags. There are system tags for content such as $catalog and $certificate which can affect how the LMS treats the content.

Assignments are made by creating "enrollment rules" which may be one of these four types:

  • Person to Content

  • Person Tag to Content

  • Person to Content Tag

  • Person Tag to Content Tag

Bascially, an enrollment rule can be as simple as assigning one content item to one person or as complex as assigning an entire lesson plan to a group of people.

Because people in an organization can sometimes be part of overlapping groups, Percolate has a more advanced feature for creating logical combinations of tags called "metatags". Metatags use boolean operators AND and OR to combine exactly two other tags (example: sales AND department-c). After being created, metatags are automatically appended to any person who matches the rule (anyone who has both the sales and department-c tags in our example).

License

Percolate is released under AFFERO GPL v3. See LICENSE.

Subdirectories such as vendor may have other FOSS libraries released under other licenses.

About

Learning Management System with RESTful API.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published