# bohmide/outi-d-desktop architecture

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

- Interactive diagram: https://gitdiagram.com/bohmide/outi-d-desktop
- Repository: https://github.com/bohmide/outi-d-desktop

## Overview

Outi-D is a JavaFX desktop learning and community client. Users sign in, then navigate courses and quizzes, participate in forums, or browse and reserve events; the UI also supports content export and event QR codes. The README describes REST/JWT access to a Symfony backend, while sampled services show direct JDBC through MyConnection, so both are represented without assuming a single data-access path. Several README capabilities are represented from documentation and the tree; their implementation wiring was not sampled.

Main entry points: [`src/main/java/services/EventService.java`](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/EventService.java) (Event service), [`src/main/java/utils/MyConnection.java`](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/utils/MyConnection.java) (JDBC connection), [`src/main/java/controllers/MainController.java`](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/MainController.java) (Main navigation), [`src/main/java/controllers/ForumViewController.java`](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/ForumViewController.java) (Forum screens)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_login["Login and signup"]
  node_main["Main navigation"]
end

subgraph group_learning["Learning"]
  node_courseui["Course screens"]
  node_chapterui["Chapter screens"]
  node_quizui["Quiz screens"]
  node_course["Course service<br/>[CoursService.java]"]
  node_chapter["Chapter service"]
  node_quiz["Quiz service<br/>[QuizService.java]"]
end

subgraph group_community["Community"]
  node_forumui["Forum screens"]
  node_postui["Post screens"]
  node_forum["Forum service<br/>[ForumService.java]"]
  node_post["Post service<br/>[PostService.java]"]
  node_comment["Comment service"]
end

subgraph group_events["Events"]
  node_eventui["Event administration"]
  node_student_events["Student events"]
  node_event["Event service<br/>[EventService.java]"]
  node_genre["Genre service"]
  node_sponsor["Sponsor service"]
end

subgraph group_shared["Shared services"]
  node_qr["Barcode encoding<br/>[QRCodeWriter.java]"]
  node_pdf["PDF export<br/>[PDFService.java]"]
  node_cert["Certification PDF and mail"]
  node_connection["JDBC connection<br/>[MyConnection.java]"]
end

node_learner(("Learner"))
node_database[("Shared SQL database")]
node_backend["Symfony REST API"]
node_translation["Translation API"]
node_stripe["Stripe payments"]

node_learner -->|"starts session"| node_login
node_login -.->|"authenticates via JWT"| node_backend
node_learner -->|"uses"| node_main
node_main -->|"opens"| node_courseui
node_main -->|"opens"| node_forumui
node_main -->|"opens"| node_student_events
node_courseui -->|"requests courses"| node_course
node_chapterui -->|"requests chapters"| node_chapter
node_quizui -->|"manages quizzes"| node_quiz
node_forumui -->|"loads forums"| node_forum
node_forumui -->|"opens posts"| node_postui
node_postui -->|"manages posts"| node_post
node_student_events -->|"lists events"| node_event
node_eventui -->|"manages events"| node_event
node_eventui -->|"encodes QR"| node_qr
node_event -->|"loads genres"| node_genre
node_event -->|"loads sponsors"| node_sponsor
node_chapter -->|"uses JDBC"| node_connection
node_quiz -->|"uses JDBC"| node_connection
node_post -->|"uses JDBC"| node_connection
node_event -->|"uses JDBC"| node_connection
node_connection -->|"connects to"| node_database
node_learner -.->|"requests translation"| node_translation
node_learner -.->|"pays online"| node_stripe
node_learner -.->|"exports content"| node_pdf
node_quizui -.->|"requests certification"| node_cert

click node_login "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/LoginController.java"
click node_main "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/MainController.java"
click node_courseui "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/CoursControllerEtudiant.java"
click node_chapterui "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/ChapitreControllerEtudiant.java"
click node_quizui "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/QuizControllerEtudiant.java"
click node_course "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/CoursService.java"
click node_chapter "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/ChapitreService.java"
click node_quiz "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/QuizService.java"
click node_forumui "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/ForumViewController.java"
click node_postui "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/PostViewController.java"
click node_forum "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/ForumService.java"
click node_post "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/PostService.java"
click node_comment "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/CommentService.java"
click node_eventui "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/evenement/EventController.java"
click node_student_events "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/evenement/student/EventStudentController.java"
click node_event "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/EventService.java"
click node_genre "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/EventGenreService.java"
click node_sponsor "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/SponsorsService.java"
click node_qr "https://github.com/bohmide/outi-d-desktop/blob/main/lib/core/src/main/java/com/google/zxing/qrcode/QRCodeWriter.java"
click node_pdf "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/PDFService.java"
click node_cert "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/CertificationService.java"
click node_connection "https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/utils/MyConnection.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_login,node_main toneBlue
class node_courseui,node_chapterui,node_quizui,node_course,node_chapter,node_quiz,node_database toneAmber
class node_forumui,node_postui,node_forum,node_post,node_comment,node_backend,node_translation toneMint
class node_eventui,node_student_events,node_event,node_genre,node_sponsor toneRose
class node_qr,node_pdf,node_cert,node_connection,node_learner,node_stripe toneIndigo
```

## Components

### Desktop UI

- [Login and signup](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/LoginController.java): `src/main/java/controllers/LoginController.java`
- [Main navigation](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/MainController.java): `src/main/java/controllers/MainController.java`

### Learning

- [Course screens](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/CoursControllerEtudiant.java): `src/main/java/controllers/CoursControllerEtudiant.java`
- [Chapter screens](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/ChapitreControllerEtudiant.java): `src/main/java/controllers/ChapitreControllerEtudiant.java`
- [Quiz screens](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/QuizControllerEtudiant.java): `src/main/java/controllers/QuizControllerEtudiant.java`
- [Course service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/CoursService.java): `src/main/java/Services/CoursService.java`
- [Chapter service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/ChapitreService.java): `src/main/java/Services/ChapitreService.java`
- [Quiz service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/QuizService.java): `src/main/java/Services/QuizService.java`

### Community

- [Forum screens](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/ForumViewController.java): `src/main/java/controllers/ForumViewController.java`
- [Post screens](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/PostViewController.java): `src/main/java/controllers/PostViewController.java`
- [Forum service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/ForumService.java): `src/main/java/services/ForumService.java`
- [Post service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/PostService.java): `src/main/java/services/PostService.java`
- [Comment service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/CommentService.java): `src/main/java/services/CommentService.java`

### Events

- [Event administration](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/evenement/EventController.java): `src/main/java/controllers/evenement/EventController.java`
- [Student events](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/controllers/evenement/student/EventStudentController.java): `src/main/java/controllers/evenement/student/EventStudentController.java`
- [Event service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/EventService.java): `src/main/java/services/EventService.java`
- [Genre service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/EventGenreService.java): `src/main/java/services/EventGenreService.java`
- [Sponsor service](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/SponsorsService.java): `src/main/java/services/SponsorsService.java`

### Shared services

- [Barcode encoding](https://github.com/bohmide/outi-d-desktop/blob/main/lib/core/src/main/java/com/google/zxing/qrcode/QRCodeWriter.java): `lib/core/src/main/java/com/google/zxing/qrcode/QRCodeWriter.java`
- [PDF export](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/services/PDFService.java): `src/main/java/services/PDFService.java`
- [Certification PDF and mail](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/Services/CertificationService.java): `src/main/java/Services/CertificationService.java`
- [JDBC connection](https://github.com/bohmide/outi-d-desktop/blob/main/src/main/java/utils/MyConnection.java): `src/main/java/utils/MyConnection.java`

### Other components

- **Learner**
- **Shared SQL database**
- **Symfony REST API**
- **Translation API**
- **Stripe payments**

## Connections

- Learner → Login and signup: starts session
- Login and signup → Symfony REST API: authenticates via JWT
- Learner → Main navigation: uses
- Main navigation → Course screens: opens
- Main navigation → Forum screens: opens
- Main navigation → Student events: opens
- Course screens → Course service: requests courses
- Chapter screens → Chapter service: requests chapters
- Quiz screens → Quiz service: manages quizzes
- Forum screens → Forum service: loads forums
- Forum screens → Post screens: opens posts
- Post screens → Post service: manages posts
- Student events → Event service: lists events
- Event administration → Event service: manages events
- Event administration → Barcode encoding: encodes QR
- Event service → Genre service: loads genres
- Event service → Sponsor service: loads sponsors
- Chapter service → JDBC connection: uses JDBC
- Quiz service → JDBC connection: uses JDBC
- Post service → JDBC connection: uses JDBC
- Event service → JDBC connection: uses JDBC
- JDBC connection → Shared SQL database: connects to
- Learner → Translation API: requests translation
- Learner → Stripe payments: pays online
- Learner → PDF export: exports content
- Quiz screens → Certification PDF and mail: requests certification
