# ls1intum/artemis architecture

> Architecture diagram of the GitHub repository ls1intum/artemis, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ls1intum/artemis
- Repository: https://github.com/ls1intum/artemis

## Overview

Artemis is a self-hosted interactive learning platform for courses, exercises, assessment, adaptive learning, and optional AI assistance. The principal workflow is a student using the web application to access course learning activities and receive exercise feedback; instructors also create and review learning content. The README documents broad product capabilities, while the supplied source excerpts cover only selected services, so the graph preserves documented feature areas but omits unverified wiring between them. Solid links reflect sampled calls or directly documented behavior; AI integrations are shown as optional.

Main entry points: [`src/main/java/de/tum/cit/aet/artemis/exercise`](https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/exercise) (Interactive exercises), [`src/main/webapp/app/app.routes.ts`](https://github.com/ls1intum/artemis/blob/develop/src/main/webapp/app/app.routes.ts) (Application routes), [`src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java`](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java) (Programming feedback), [`src/main/java/de/tum/cit/aet/artemis/exercise/service/review/ExerciseReviewService.java`](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/exercise/service/review/ExerciseReviewService.java) (Exercise review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_routes["Application routes<br/>[app.routes.ts]"]
  node_enrollment["Course enrollment"]
  node_feature_usage["Feature usage analytics"]
end

subgraph group_learning["Learning activities"]
  node_exercise["Interactive exercises"]
  node_exam["Online exams"]
  node_communication["Course communication"]
  node_lectures["Lectures and units"]
end

subgraph group_assessment["Assessment"]
  node_programming["Programming feedback"]
  node_review["Exercise review"]
  node_quiz["Quiz submissions"]
  node_context["Review context"]
end

subgraph group_intelligence["Adaptive and AI"]
  node_competencies["Competencies and paths"]
  node_iris["Iris tutor"]
  node_pyris["Pyris pipeline"]
  node_athena["Athena suggestions"]
  node_hyperion["Hyperion authoring"]
end

node_student(("Student"))
node_instructor(("Instructor"))
node_pyris_service{{"Pyris service"}}

node_student -->|"uses"| node_routes
node_instructor -->|"uses"| node_routes
node_routes -->|"routes enrollment"| node_enrollment
node_student -->|"participates"| node_exercise
node_instructor -->|"creates activities"| node_exercise
node_exercise -->|"requests feedback"| node_programming
node_programming -.->|"requests suggestions"| node_athena
node_exercise -->|"converts answers"| node_quiz
node_instructor -->|"reviews submissions"| node_review
node_review -->|"renders thread context"| node_context
node_student -->|"takes exam"| node_exam
node_student -->|"communicates"| node_communication
node_student -->|"studies units"| node_lectures
node_exercise -->|"informs adaptation"| node_competencies
node_student -.->|"asks for guidance"| node_iris
node_iris -->|"builds execution"| node_pyris
node_pyris -.->|"executes pipeline"| node_pyris_service
node_instructor -.->|"generates variants"| node_hyperion
node_routes -->|"exposes administration"| node_feature_usage

click node_routes "https://github.com/ls1intum/artemis/blob/develop/src/main/webapp/app/app.routes.ts"
click node_enrollment "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/core/service/EnrollmentService.java"
click node_exercise "https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/exercise"
click node_programming "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java"
click node_review "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/exercise/service/review/ExerciseReviewService.java"
click node_quiz "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/quiz/service/DragAndDropQuizAnswerConversionService.java"
click node_exam "https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/exam"
click node_communication "https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/communication"
click node_lectures "https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/lecture"
click node_competencies "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/atlas/service/CompetencyOrchestrationService.java"
click node_iris "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/iris/service/session/IrisChatPipelineExecutionService.java"
click node_pyris "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/iris/service/pyris/PyrisPipelineService.java"
click node_athena "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java"
click node_hyperion "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/hyperion/service/variants/ExerciseVariantGenerationPipelineService.java"
click node_context "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/hyperion/service/HyperionReviewCommentContextRendererService.java"
click node_feature_usage "https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/admin/service/FeatureUsageQueryService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_routes,node_enrollment,node_feature_usage toneBlue
class node_exercise,node_exam,node_communication,node_lectures toneAmber
class node_programming,node_review,node_quiz,node_context toneMint
class node_competencies,node_iris,node_pyris,node_athena,node_hyperion toneRose
class node_student,node_instructor,node_pyris_service toneIndigo
```

## Components

### Web application

- [Application routes](https://github.com/ls1intum/artemis/blob/develop/src/main/webapp/app/app.routes.ts): `src/main/webapp/app/app.routes.ts`
- [Course enrollment](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/core/service/EnrollmentService.java): `src/main/java/de/tum/cit/aet/artemis/core/service/EnrollmentService.java`
- [Feature usage analytics](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/admin/service/FeatureUsageQueryService.java): `src/main/java/de/tum/cit/aet/artemis/admin/service/FeatureUsageQueryService.java`

### Learning activities

- [Interactive exercises](https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/exercise): `src/main/java/de/tum/cit/aet/artemis/exercise`
- [Online exams](https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/exam): `src/main/java/de/tum/cit/aet/artemis/exam`
- [Course communication](https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/communication): `src/main/java/de/tum/cit/aet/artemis/communication`
- [Lectures and units](https://github.com/ls1intum/artemis/tree/develop/src/main/java/de/tum/cit/aet/artemis/lecture): `src/main/java/de/tum/cit/aet/artemis/lecture`

### Assessment

- [Programming feedback](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java): `src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java`
- [Exercise review](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/exercise/service/review/ExerciseReviewService.java): `src/main/java/de/tum/cit/aet/artemis/exercise/service/review/ExerciseReviewService.java`
- [Quiz submissions](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/quiz/service/DragAndDropQuizAnswerConversionService.java): `src/main/java/de/tum/cit/aet/artemis/quiz/service/DragAndDropQuizAnswerConversionService.java`
- [Review context](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/hyperion/service/HyperionReviewCommentContextRendererService.java): `src/main/java/de/tum/cit/aet/artemis/hyperion/service/HyperionReviewCommentContextRendererService.java`

### Adaptive and AI

- [Competencies and paths](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/atlas/service/CompetencyOrchestrationService.java): `src/main/java/de/tum/cit/aet/artemis/atlas/service/CompetencyOrchestrationService.java`
- [Iris tutor](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/iris/service/session/IrisChatPipelineExecutionService.java): `src/main/java/de/tum/cit/aet/artemis/iris/service/session/IrisChatPipelineExecutionService.java`
- [Pyris pipeline](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/iris/service/pyris/PyrisPipelineService.java): `src/main/java/de/tum/cit/aet/artemis/iris/service/pyris/PyrisPipelineService.java`
- [Athena suggestions](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java): `src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseCodeReviewFeedbackService.java`
- [Hyperion authoring](https://github.com/ls1intum/artemis/blob/develop/src/main/java/de/tum/cit/aet/artemis/hyperion/service/variants/ExerciseVariantGenerationPipelineService.java): `src/main/java/de/tum/cit/aet/artemis/hyperion/service/variants/ExerciseVariantGenerationPipelineService.java`

### Other components

- **Student**
- **Instructor**
- **Pyris service**

## Connections

- Student → Application routes: uses
- Instructor → Application routes: uses
- Application routes → Course enrollment: routes enrollment
- Student → Interactive exercises: participates
- Instructor → Interactive exercises: creates activities
- Interactive exercises → Programming feedback: requests feedback
- Programming feedback → Athena suggestions: requests suggestions
- Interactive exercises → Quiz submissions: converts answers
- Instructor → Exercise review: reviews submissions
- Exercise review → Review context: renders thread context
- Student → Online exams: takes exam
- Student → Course communication: communicates
- Student → Lectures and units: studies units
- Interactive exercises → Competencies and paths: informs adaptation
- Student → Iris tutor: asks for guidance
- Iris tutor → Pyris pipeline: builds execution
- Pyris pipeline → Pyris service: executes pipeline
- Instructor → Hyperion authoring: generates variants
- Application routes → Feature usage analytics: exposes administration
