# thehexalab/moodit architecture

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

- Interactive diagram: https://gitdiagram.com/thehexalab/moodit
- Repository: https://github.com/thehexalab/moodit

## Overview

MoodIT is a student-facing academic collaboration and learning platform. The visible application entry routes users into the protected dashboard; backend services provide authentication, course and community features, quizzes and code execution, permissions, live events, and professor feedback analysis. The graph preserves those documented capabilities, but the excerpts do not show the frontend’s API calls or most service-to-service routing, so those connections are omitted or marked unverified.

Main entry points: [`execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java`](https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java) (Execution engine), [`frontend/src/App.tsx`](https://github.com/thehexalab/moodit/blob/main/frontend/src/App.tsx) (Web application), [`auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java`](https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java) (Authentication flows), [`core-service/src/main/java/com/moodit/core_service/realtime/RealtimeEventPublisher.java`](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/realtime/RealtimeEventPublisher.java) (Live event publisher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Student application"]
  node_webapp["Web application<br/>[App.tsx]"]
end

subgraph group_identity["Identity and access"]
  node_authapi["Authentication API"]
  node_authlogic["Authentication flows<br/>[AuthService.java]"]
  node_authstore[("Identity records")]
  node_gateway["API gateway<br/>[JwtAuthFilter.java]"]
  node_permissions["Access rules"]
  node_membership["Membership checks"]
  node_email["Email delivery<br/>[EmailService.java]"]
end

subgraph group_learning["Academic platform"]
  node_courseapi["Course management"]
  node_coursemodel[("Academic records<br/>[Program.java]")]
  node_forumlogic["Course forums<br/>[ForumService.java]"]
  node_quizlogic["Quiz workflows<br/>[QuizService.java]"]
  node_audit["Audit logging"]
end

subgraph group_runtime["Execution and realtime"]
  node_executionapi["Code execution API"]
  node_executionlogic["Execution engine"]
  node_assembler["Code assembly<br/>[CodeAssembler.java]"]
  node_piston["Piston runner<br/>[PistonClient.java]"]
  node_events["Live event publisher"]
end

subgraph group_feedback["AI feedback"]
  node_mcp["Feedback analysis<br/>[McpService.java]"]
  node_ai["MCP analysis provider"]
end

node_student(("Student"))

node_student -->|"uses"| node_webapp
node_webapp -.->|"authenticates"| node_authapi
node_webapp -.->|"uses APIs"| node_gateway
node_authapi -->|"delegates to"| node_authlogic
node_authlogic -->|"reads and writes"| node_authstore
node_authlogic -.->|"sends codes"| node_email
node_gateway -.->|"checks access"| node_permissions
node_permissions -.->|"checks membership"| node_membership
node_courseapi -.->|"manages records"| node_coursemodel
node_quizlogic -->|"requests grading"| node_executionlogic
node_quizlogic -->|"publishes attempts"| node_events
node_forumlogic -.->|"broadcasts updates"| node_events
node_executionapi -->|"invokes"| node_executionlogic
node_executionlogic -->|"assembles code"| node_assembler
node_executionlogic -->|"runs code"| node_piston
node_mcp -.->|"analyzes feedback"| node_ai
node_mcp -.->|"pushes results"| node_events

click node_webapp "https://github.com/thehexalab/moodit/blob/main/frontend/src/App.tsx"
click node_authapi "https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/controller/AuthController.java"
click node_authlogic "https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java"
click node_authstore "https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/repository/UserRepository.java"
click node_gateway "https://github.com/thehexalab/moodit/blob/main/gateway/src/main/java/com/moodit/gateway/filter/JwtAuthFilter.java"
click node_permissions "https://github.com/thehexalab/moodit/blob/main/permission-service/src/main/java/com/moodit/permission_service/service/PermissionService.java"
click node_membership "https://github.com/thehexalab/moodit/blob/main/permission-service/src/main/java/com/moodit/permission_service/service/MembershipService.java"
click node_courseapi "https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/controller/CourseController.java"
click node_coursemodel "https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/model/Program.java"
click node_forumlogic "https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/service/ForumService.java"
click node_quizlogic "https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/service/QuizService.java"
click node_audit "https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/service/AuditLogService.java"
click node_executionapi "https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/controller/ExecutionController.java"
click node_executionlogic "https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java"
click node_assembler "https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/assembly/CodeAssembler.java"
click node_piston "https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/piston/PistonClient.java"
click node_events "https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/realtime/RealtimeEventPublisher.java"
click node_mcp "https://github.com/thehexalab/moodit/blob/main/mcp-service/src/main/java/com/moodit/mcp_service/service/McpService.java"
click node_ai "https://github.com/thehexalab/moodit/blob/main/mcp-service/src/main/java/com/moodit/mcp_service/service/mcp/OpenAiCompatibleMcpAnalysisClient.java"
click node_email "https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/service/EmailService.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_webapp toneBlue
class node_authapi,node_authlogic,node_authstore,node_gateway,node_permissions,node_membership,node_email toneAmber
class node_courseapi,node_coursemodel,node_forumlogic,node_quizlogic,node_audit toneMint
class node_executionapi,node_executionlogic,node_assembler,node_piston,node_events toneRose
class node_mcp,node_ai,node_student toneIndigo
```

## Components

### Student application

- [Web application](https://github.com/thehexalab/moodit/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`

### Identity and access

- [Authentication API](https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/controller/AuthController.java): `auth-service/src/main/java/com/moodit/auth_service/controller/AuthController.java`
- [Authentication flows](https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java): `auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java`
- [Identity records](https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/repository/UserRepository.java): `auth-service/src/main/java/com/moodit/auth_service/repository/UserRepository.java`
- [API gateway](https://github.com/thehexalab/moodit/blob/main/gateway/src/main/java/com/moodit/gateway/filter/JwtAuthFilter.java): `gateway/src/main/java/com/moodit/gateway/filter/JwtAuthFilter.java`
- [Access rules](https://github.com/thehexalab/moodit/blob/main/permission-service/src/main/java/com/moodit/permission_service/service/PermissionService.java): `permission-service/src/main/java/com/moodit/permission_service/service/PermissionService.java`
- [Membership checks](https://github.com/thehexalab/moodit/blob/main/permission-service/src/main/java/com/moodit/permission_service/service/MembershipService.java): `permission-service/src/main/java/com/moodit/permission_service/service/MembershipService.java`
- [Email delivery](https://github.com/thehexalab/moodit/blob/main/auth-service/src/main/java/com/moodit/auth_service/service/EmailService.java): `auth-service/src/main/java/com/moodit/auth_service/service/EmailService.java`

### Academic platform

- [Course management](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/controller/CourseController.java): `core-service/src/main/java/com/moodit/core_service/controller/CourseController.java`
- [Academic records](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/model/Program.java): `core-service/src/main/java/com/moodit/core_service/model/Program.java`
- [Course forums](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/service/ForumService.java): `core-service/src/main/java/com/moodit/core_service/service/ForumService.java`
- [Quiz workflows](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/service/QuizService.java): `core-service/src/main/java/com/moodit/core_service/service/QuizService.java`
- [Audit logging](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/service/AuditLogService.java): `core-service/src/main/java/com/moodit/core_service/service/AuditLogService.java`

### Execution and realtime

- [Code execution API](https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/controller/ExecutionController.java): `execution-service/src/main/java/com/moodit/execution_service/controller/ExecutionController.java`
- [Execution engine](https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java): `execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java`
- [Code assembly](https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/assembly/CodeAssembler.java): `execution-service/src/main/java/com/moodit/execution_service/assembly/CodeAssembler.java`
- [Piston runner](https://github.com/thehexalab/moodit/blob/main/execution-service/src/main/java/com/moodit/execution_service/piston/PistonClient.java): `execution-service/src/main/java/com/moodit/execution_service/piston/PistonClient.java`
- [Live event publisher](https://github.com/thehexalab/moodit/blob/main/core-service/src/main/java/com/moodit/core_service/realtime/RealtimeEventPublisher.java): `core-service/src/main/java/com/moodit/core_service/realtime/RealtimeEventPublisher.java`

### AI feedback

- [Feedback analysis](https://github.com/thehexalab/moodit/blob/main/mcp-service/src/main/java/com/moodit/mcp_service/service/McpService.java): `mcp-service/src/main/java/com/moodit/mcp_service/service/McpService.java`
- [MCP analysis provider](https://github.com/thehexalab/moodit/blob/main/mcp-service/src/main/java/com/moodit/mcp_service/service/mcp/OpenAiCompatibleMcpAnalysisClient.java): `mcp-service/src/main/java/com/moodit/mcp_service/service/mcp/OpenAiCompatibleMcpAnalysisClient.java`

### Other components

- **Student**

## Connections

- Student → Web application: uses (evidence: `README.md`)
- Web application → Authentication API: authenticates
- Web application → API gateway: uses APIs
- Authentication API → Authentication flows: delegates to (evidence: `auth-service/src/main/java/com/moodit/auth_service/controller/AuthController.java`)
- Authentication flows → Identity records: reads and writes (evidence: `auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java`)
- Authentication flows → Email delivery: sends codes (evidence: `auth-service/src/main/java/com/moodit/auth_service/service/AuthService.java`)
- API gateway → Access rules: checks access
- Access rules → Membership checks: checks membership
- Course management → Academic records: manages records
- Quiz workflows → Execution engine: requests grading (evidence: `core-service/src/main/java/com/moodit/core_service/service/QuizService.java`)
- Quiz workflows → Live event publisher: publishes attempts (evidence: `core-service/src/main/java/com/moodit/core_service/service/QuizService.java`)
- Course forums → Live event publisher: broadcasts updates (evidence: `core-service/src/main/java/com/moodit/core_service/service/ForumService.java`)
- Code execution API → Execution engine: invokes (evidence: `execution-service/src/main/java/com/moodit/execution_service/controller/ExecutionController.java`)
- Execution engine → Code assembly: assembles code (evidence: `execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java`)
- Execution engine → Piston runner: runs code (evidence: `execution-service/src/main/java/com/moodit/execution_service/service/ExecutionService.java`)
- Feedback analysis → MCP analysis provider: analyzes feedback
- Feedback analysis → Live event publisher: pushes results
