# luclvan/edulog architecture

> Architecture diagram of the GitHub repository luclvan/edulog, 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/luclvan/edulog
- Repository: https://github.com/luclvan/edulog

## Overview

EduLog is a Flutter app for managing student project contributions and conducting AI-assisted oral exams. The documented workflow runs from class and group setup, through GitHub/Google Docs contribution analysis and student verification, to AI question generation, low-typing assessment, and result delivery. The README describes these capabilities and a Clean Architecture layout, but the supplied tree contains no `lib/` source, so feature paths and most runtime wiring cannot be verified; those nodes have null paths. Native runner files show platform launch only.

Main entry points: [`windows/runner/main.cpp`](https://github.com/luclvan/edulog/blob/main/windows/runner/main.cpp) (Windows Runner), [`linux/runner/main.cc`](https://github.com/luclvan/edulog/blob/main/linux/runner/main.cc) (Linux Runner), [`ios/Runner/AppDelegate.swift`](https://github.com/luclvan/edulog/blob/main/ios/Runner/AppDelegate.swift) (iOS Runner), [`macos/Runner/MainFlutterWindow.swift`](https://github.com/luclvan/edulog/blob/main/macos/Runner/MainFlutterWindow.swift) (macOS Runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Class and Groups"]
  node_class_group["Class and Group Management"]
  node_project_links["Project Links and Membership"]
end

subgraph group_contribution["Contribution Analysis"]
  node_contribution_metrics["Contribution Metrics"]
  node_burst_flags["Burst and Commit Flags"]
  node_personal_dashboard["Student Dashboard"]
end

subgraph group_exam["Oral Examination"]
  node_identity_check["Student Identity Check"]
  node_ai_questions["AI Question Assistant"]
  node_assessment["Assessment and Feedback"]
  node_voice_input["Voice to Text"]
  node_results["Exam Results"]
end

subgraph group_platform["App Platform"]
  node_flutter_app["EduLog App"]
  node_windows_runner["Windows Runner<br/>[main.cpp]"]
  node_linux_runner["Linux Runner<br/>[main.cc]"]
  node_ios_runner["iOS Runner<br/>[AppDelegate.swift]"]
  node_macos_runner["macOS Runner"]
end

node_teacher(("Teacher"))
node_student(("Student"))
node_github["GitHub"]
node_google_docs["Google Docs"]
node_gemini["Google Gemini"]
node_firebase_auth["Firebase Authentication"]
node_firestore[("Cloud Firestore")]

node_teacher -->|"uses"| node_flutter_app
node_student -->|"uses"| node_flutter_app
node_flutter_app -->|"manages"| node_class_group
node_student -->|"joins"| node_class_group
node_class_group -->|"configures"| node_project_links
node_project_links -.->|"links repository"| node_github
node_project_links -.->|"links documents"| node_google_docs
node_flutter_app -->|"synchronizes and analyzes"| node_contribution_metrics
node_contribution_metrics -.->|"reads contributions"| node_github
node_contribution_metrics -.->|"reads contributions"| node_google_docs
node_contribution_metrics -->|"detects anomalies"| node_burst_flags
node_student -->|"views"| node_personal_dashboard
node_personal_dashboard -->|"shows metrics"| node_contribution_metrics
node_teacher -->|"verifies student"| node_identity_check
node_teacher -->|"requests questions"| node_ai_questions
node_ai_questions -.->|"analyzes commit code"| node_github
node_ai_questions -.->|"analyzes documents"| node_google_docs
node_ai_questions -.->|"generates questions"| node_gemini
node_teacher -->|"records evaluation"| node_assessment
node_teacher -->|"dictates feedback"| node_voice_input
node_assessment -->|"finalizes results"| node_results
node_voice_input -->|"supplies feedback text"| node_results
node_results -->|"delivers outcome"| node_student
node_flutter_app -.->|"authenticates"| node_firebase_auth
node_flutter_app -.->|"reads and writes"| node_firestore
node_windows_runner -->|"launches"| node_flutter_app
node_linux_runner -->|"launches"| node_flutter_app
node_ios_runner -->|"launches"| node_flutter_app
node_macos_runner -->|"hosts"| node_flutter_app

click node_windows_runner "https://github.com/luclvan/edulog/blob/main/windows/runner/main.cpp"
click node_linux_runner "https://github.com/luclvan/edulog/blob/main/linux/runner/main.cc"
click node_ios_runner "https://github.com/luclvan/edulog/blob/main/ios/Runner/AppDelegate.swift"
click node_macos_runner "https://github.com/luclvan/edulog/blob/main/macos/Runner/MainFlutterWindow.swift"

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_class_group,node_project_links toneBlue
class node_contribution_metrics,node_burst_flags,node_personal_dashboard,node_firestore toneAmber
class node_identity_check,node_ai_questions,node_assessment,node_voice_input,node_results toneMint
class node_flutter_app,node_windows_runner,node_linux_runner,node_ios_runner,node_macos_runner toneRose
class node_teacher,node_student,node_github,node_google_docs,node_gemini,node_firebase_auth toneIndigo
```

## Components

### Class and Groups

- **Class and Group Management**
- **Project Links and Membership**

### Contribution Analysis

- **Contribution Metrics**
- **Burst and Commit Flags**
- **Student Dashboard**

### Oral Examination

- **Student Identity Check**
- **AI Question Assistant**
- **Assessment and Feedback**
- **Voice to Text**
- **Exam Results**

### App Platform

- **EduLog App**
- [Windows Runner](https://github.com/luclvan/edulog/blob/main/windows/runner/main.cpp): `windows/runner/main.cpp`
- [Linux Runner](https://github.com/luclvan/edulog/blob/main/linux/runner/main.cc): `linux/runner/main.cc`
- [iOS Runner](https://github.com/luclvan/edulog/blob/main/ios/Runner/AppDelegate.swift): `ios/Runner/AppDelegate.swift`
- [macOS Runner](https://github.com/luclvan/edulog/blob/main/macos/Runner/MainFlutterWindow.swift): `macos/Runner/MainFlutterWindow.swift`

### Other components

- **Teacher**
- **Student**
- **GitHub**
- **Google Docs**
- **Google Gemini**
- **Firebase Authentication**
- **Cloud Firestore**

## Connections

- Teacher → EduLog App: uses
- Student → EduLog App: uses
- EduLog App → Class and Group Management: manages
- Student → Class and Group Management: joins
- Class and Group Management → Project Links and Membership: configures
- Project Links and Membership → GitHub: links repository
- Project Links and Membership → Google Docs: links documents
- EduLog App → Contribution Metrics: synchronizes and analyzes
- Contribution Metrics → GitHub: reads contributions
- Contribution Metrics → Google Docs: reads contributions
- Contribution Metrics → Burst and Commit Flags: detects anomalies
- Student → Student Dashboard: views
- Student Dashboard → Contribution Metrics: shows metrics
- Teacher → Student Identity Check: verifies student
- Teacher → AI Question Assistant: requests questions
- AI Question Assistant → GitHub: analyzes commit code
- AI Question Assistant → Google Docs: analyzes documents
- AI Question Assistant → Google Gemini: generates questions
- Teacher → Assessment and Feedback: records evaluation
- Teacher → Voice to Text: dictates feedback
- Assessment and Feedback → Exam Results: finalizes results
- Voice to Text → Exam Results: supplies feedback text
- Exam Results → Student: delivers outcome
- EduLog App → Firebase Authentication: authenticates
- EduLog App → Cloud Firestore: reads and writes
- Windows Runner → EduLog App: launches
- Linux Runner → EduLog App: launches
- iOS Runner → EduLog App: launches
- macOS Runner → EduLog App: hosts
