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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
LibreTranslate
Open‑source, self‑hosted machine translation API
BuddyPress
Turn WordPress into a social network
Mere Medical
Centralize Your Health Records, One Secure Place
Matomo
Open‑source web analytics with full data ownership
Mailu
Docker‑based, feature‑rich mail server for self‑hosters
Databag
Federated, end‑to‑end encrypted messenger for self‑hosting
