Skip to content

teemulehtinen/a-plus

 
 

Repository files navigation

A+

"We present a design and open source implementation for a service oriented e-learning system, which utilizes external services for supporting a wide range of learning content and also offers a REST API for external clients to fetch information stored in the system."

Karavirta, V. & Ihantola, P. & Koskinen, T. (2013) Service-Oriented Approach to Improve Interoperability of E-Learning Systems http://dx.doi.org/10.1109/ICALT.2013.105

The system has since been developed by various contributors at Aalto University, Finland.

Requirements

A+ is a Django 4.2 and Python 3.8+ application which has been run in production using Postgresql database, Apache 2 (or Nginx) and uwsgi. See doc/DEPLOYMENT.md for further deployment instructions. Consider using virtualenv and pip3 install -r requirements.txt. Create local_settings.py and override necessary Django settings from aplus/settings.py. At least DEBUG, SECRET_KEY and DATABASES must be set in case of deployment. The server process needs write access to the media directory.

Development

See doc/README.md on how to create and run a test environment for development. The doc/GRADERS.md describes the assessment protocol supported by A+. Additionally, there is a minimal example grader in doc/example_grader.py, which can be used to start a new service. A list of existing assessment services and other tools can be found in the project github page.

The selenium_test/ offers an integration test suite using the Selenium Firefox driver.

Code Organization

  • aplus/ : Django main settings
  • userprofile/ : User information and authentication
  • shibboleth_login/ : User authentication via external Shibboleth login. Requires Shibboleth configuration for the Apache/Nginx web server.
  • course/ : The course instances, modules and chapters
  • exercise/ : Exercises and submissions to them
  • deviations/ : Student deviations to submission rules (deadline extensions and extra submission attempts)
  • notification/ : User messaging framework
  • edit_course/ : The course editing for teachers
  • inheritance/ : Utilities for model class hierarchy
  • external_services/ : Linking to external services, optionally LTI authenticated
  • apps/ : Provides plugins that can integrate additional content to course instances
  • api/ : An HTTP REST service API for accessing A+ data
  • redirect_old_urls/ : Redirections from the most important old URL targets
  • lib/ : General library code
  • templates/ : General site templates
  • assets/ : Static web server assets, e.g., JavaScript, styles and images
  • assets_src/ : Asset packages (as npm packages), which should populate assets/ with compiled files.

About

A+ frontend portal - A+ LMS documentation:

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 71.5%
  • JavaScript 14.8%
  • HTML 11.7%
  • SCSS 1.6%
  • Other 0.4%