MCPSERV.CLUB
INGInious

INGInious

Self-Hosted

Self‑hosted platform for programming courses and instant feedback

Active(88)
230stars
0views
Updated 2 days ago
INGInious screenshot 1
1 / 3

Overview

Discover what makes INGInious powerful

INGInious is a self‑hosted, open‑source platform designed to deliver programming courses and assignments with automated grading. From a developer’s perspective, it is a modular web application that exposes a rich API surface for creating, managing, and evaluating tasks. The system is built to be lightweight yet extensible, enabling integration with existing learning management systems (LMS) or custom front‑ends. It is distributed under the AGPL license, ensuring that any modifications remain open and can be shared back to the community.

Backend

Database

Grading Engine

Front‑end

Overview

INGInious is a self‑hosted, open‑source platform designed to deliver programming courses and assignments with automated grading. From a developer’s perspective, it is a modular web application that exposes a rich API surface for creating, managing, and evaluating tasks. The system is built to be lightweight yet extensible, enabling integration with existing learning management systems (LMS) or custom front‑ends. It is distributed under the AGPL license, ensuring that any modifications remain open and can be shared back to the community.

Technical Stack & Architecture

  • Backend: Python 3, Flask framework for the web layer. The core logic is organized in a service‑oriented architecture where each feature (e.g., assignment handling, user management, grading) is a separate module.
  • Database: PostgreSQL (or SQLite for minimal setups). The schema is normalized with separate tables for users, courses, tasks, submissions, and evaluation results. SQLAlchemy provides ORM mapping, allowing developers to interact with the database via Python objects.
  • Grading Engine: Each assignment is a task defined in JSON/YAML, specifying input/output files and optional Docker images. Submissions are executed inside isolated containers (Docker or LXC), guaranteeing reproducibility and security. The engine supports multiple languages, custom compilers, and even custom evaluation scripts.
  • Front‑end: Vanilla JavaScript with a small amount of jQuery, rendering pages via Jinja2 templates. The UI is intentionally minimal to keep the focus on core functionality; developers can replace or extend it with React/Vue if desired.

Core Capabilities & APIs

  • RESTful API: Exposes endpoints for creating courses, tasks, and users; retrieving submission histories; triggering re‑evaluations. Authentication is token‑based (JWT), facilitating integration with external auth providers.
  • Webhooks: On submission events, INGInious can POST to arbitrary URLs, enabling real‑time notifications or downstream analytics.
  • Plugin System: Developers can write extensions that hook into the grading lifecycle (pre‑check, post‑check) or add new UI components. The plugin API is documented and uses Python import hooks, making it straightforward to package extensions as pip modules.
  • Scripting Interface: Advanced users can embed custom Python scripts within a task’s evaluation pipeline, allowing sophisticated scoring algorithms or plagiarism detection.

Deployment & Infrastructure

INGInious can be deployed on any Linux server that supports Docker and PostgreSQL. The official Docker image simplifies the process: a single docker-compose.yml can spin up the web service, database, and grading worker. For larger deployments, horizontal scaling is achieved by running multiple grading workers behind a message broker (Redis). The platform’s stateless web layer makes it amenable to load balancers and auto‑scaling groups in cloud environments.

Integration & Extensibility

The platform’s design encourages integration with existing LMSs such as Moodle or Canvas via LTI 1.3, allowing institutions to embed INGInious assignments within their course pages without leaving the LMS context. Additionally, the API and webhooks provide hooks for custom dashboards or analytics tools. The open‑source nature means that developers can fork the repository, add new language support, or modify the grading logic to fit niche pedagogical needs.

Developer Experience

Configuration is driven by a single YAML file (config.yaml), where developers can set database URLs, Docker registry settings, and authentication backends. The documentation is comprehensive, covering installation, API usage, plugin development, and deployment scenarios. A vibrant community on GitHub and a mailing list offer timely support, while the AGPL license guarantees that any improvements remain free for all users.

Use Cases

  • University Course Management: Professors can host semester‑long programming courses, automatically grading thousands of student submissions with reproducible environments.
  • Coding Bootcamps: Instructors can rapidly prototype new assignments, integrate with custom front‑ends, and track progress in real time.
  • Research Evaluation: Researchers needing to benchmark algorithmic solutions can deploy INGInious to run large numbers of test cases in isolated containers, ensuring fair comparisons.
  • Continuous Integration: Dev teams can embed INGInious tasks into CI pipelines to validate code against a suite of unit tests before merging.

Advantages

INGInious offers a highly configurable grading pipeline, unlike monolithic LMS solutions that lock students into proprietary environments. Its container‑based isolation guarantees reproducibility and security, while the open API allows seamless integration with external tools. The AGPL license ensures that any enhancements remain community‑owned, fostering rapid innovation. Performance-wise, the lightweight Flask backend and efficient Docker orchestration enable the platform to handle thousands of concurrent submissions without significant latency. For developers seeking a flexible, self‑hosted learning platform that can be tailored to institutional needs, INGInious provides the technical depth and extensibility required.

Open SourceReady to get started?

Join the community and start self-hosting INGInious today