Skip to content
A web application to manage online programming assignments – powered by Python, Django, Git and Docker
Branch: master
Clone or download
Latest commit bd813c6 Apr 4, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Add initial version of the code editor tab Mar 1, 2019
docs Fix wording and outdated commands [skip ci] Mar 18, 2018
lib Add GUI support for JPlag via Django admin Jul 26, 2018
support Improve the docs Mar 8, 2018
tests Perform minor changes and fix filename validation Apr 4, 2019
.editorconfig Add .editorconfig and mention it in Jul 27, 2016
.env.develop Remove the inloop.gh_import module Mar 5, 2018
.gitignore Enable Codacy code coverage reports Mar 8, 2018
.travis.yml Pin to known good versions of build tools Mar 20, 2019 Update outdated Google style guide link Jul 27, 2018
Makefile Add make run to Makefile Nov 27, 2018
Pipfile Drop the django-password-reset dependency Mar 22, 2019
build-requirements.txt Add css and js linter to Travis CI checks Mar 1, 2019 Add css and js linter to Travis CI checks Mar 1, 2019 Simplify Makefile, .travis.yml and with pipenv Feb 26, 2018

    ___       ___       ___       ___       ___       ___
   /\  \     /\__\     /\__\     /\  \     /\  \     /\  \
  _\:\  \   /:| _|_   /:/  /    /::\  \   /::\  \   /::\  \
 /\/::\__\ /::|/\__\ /:/__/    /:/\:\__\ /:/\:\__\ /::\:\__\
 \::/\/__/ \/|::/  / \:\  \    \:\/:/  / \:\/:/  / \/\::/  /
  \:\__\     |:/  /   \:\__\    \::/  /   \::/  /     \/__/
   \/__/     \/__/     \/__/     \/__/     \/__/

License: GPL v3 Build Status Coverage Badge Codacy Badge

INLOOP, the INteractive Learning center for Object-Oriented Programming, is a Python web application to manage online programming courses, powered by Git, Django and Docker:

  • Flexible: you can write tasks for arbitrary programming languages, as long as they can be packaged into a Docker image.
  • Secure: solutions are checked inside a minimal and strictly isolated Docker container, which is discarded after execution.
  • Modern: push-based (or periodic pull-based) import of tasks, Markdown task descriptions and accompanying material from a Git repository.
  • Fast & scalable: solutions are processed asynchronously by a configurable number of background workers.
  • Easy to extend: modern, modular and PEP-8 compliant Python 3 code base with less than 3000 lines of code, good test coverage and continuous integration tests.

Quick start

INLOOP requires the following software:

  • Debian 8+ or Ubuntu 16.04+, macOS 10.11+ (for development only)
  • Python 3.5 or 3.6
  • Docker 1.10+ (Docker setup !!!)
  • Redis 2.6+
  • Git 2.3+ (workarounds for older Git versions)
  • PostgreSQL 9.3+ (for production deployment, not needed for development)

Using the command line, a development instance can be set up as follows:

  1. If you don't have it already, install pipenv. If you run into trouble, the known "good" versions of the build tools are listed in build-requirements.txt.

  2. Install required software with ./support/scripts/ (Debian/Ubuntu) or ./support/scripts/ (macOS).

  3. Run make init and make loaddb to bootstrap your local development environment.

  4. Start and monitor the development web server and huey workers with pipenv run honcho start.

  5. The previous step prints the address and port number of the local webserver that was started. You can immediately log in using the demo user accounts admin and student with the password secret.

You can use our Java example task repository as a starting point to explore INLOOP.


INLOOP demo on YouTube



Authors and credits

Project lead: Martin Morgenstern
Contributors: Dominik Muhs, Philipp Matthes

INLOOP borrows its concept from the Praktomat, developed originally at the University of Passau and later at the Karlsruhe Institute of Technology:


INLOOP is released under GPL version 3.

Copyright (C) 2015-2017 Dominik Muhs and Martin Morgenstern
Copyright (C) 2018-2019 Philipp Matthes and Martin Morgenstern
Economic rights: Technische Universität Dresden (Germany)

INLOOP is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

INLOOP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You can’t perform that action at this time.