# hylmithecoder/matkul-pbo-sem3 architecture

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

- Interactive diagram: https://gitdiagram.com/hylmithecoder/matkul-pbo-sem3
- Repository: https://github.com/hylmithecoder/matkul-pbo-sem3

## Overview

This Java application teaches semester-three programming topics through a JavaFX dashboard and a modular CLI. In the GUI path, users select a lesson, open its window, and work with student grades, thread-priority sorting, or Java collections; lesson selection can also open accompanying PDFs. In CLI mode, users choose the thread demo or an API-backed chatbot. The graph reflects those documented capabilities and the supplied source excerpts; collection behavior is represented at its controller/model-directory level because individual model implementations were not sampled.

Main entry points: [`src/main/java/sem3matkul/core/WindowManager.java`](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/WindowManager.java) (Window manager), [`src/main/java/sem3matkul/App.java`](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/App.java) (App), [`src/main/java/sem3matkul/dashboard/DashboardController.java`](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/dashboard/DashboardController.java) (Dashboard), [`src/main/java/sem3matkul/core/CliManager.java`](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/CliManager.java) (CLI dispatcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_app["App<br/>[App.java]"]
  node_cli_manager["CLI dispatcher<br/>[CliManager.java]"]
end

subgraph group_gui["GUI lessons"]
  node_dashboard["Dashboard"]
  node_window_manager["Window manager<br/>[WindowManager.java]"]
  node_dashboard_view["Dashboard view<br/>[dashboard.fxml]"]
  node_pdf_renderer["PDF viewer<br/>[PDFRenderer.java]"]
end

subgraph group_cli["CLI lessons"]
  node_thread_cli["Thread CLI demo<br/>[ThreadCli.java]"]
  node_chatbot["Chatbot CLI<br/>[ChatBotCLI.java]"]
end

subgraph group_domain["Lesson logic"]
  node_student_controller["Student grades"]
  node_student_model["Student grade model<br/>[Mahasiswa.java]"]
  node_thread_controller["Thread lesson UI"]
  node_thread_model["Priority model<br/>[Thread.java]"]
  node_collection_controller["Collections UI"]
  node_collection_models["Collection models"]
end

node_user(("User"))
node_api_service{{"Chat API"}}

node_user -->|"starts"| node_app
node_app -->|"loads"| node_dashboard_view
node_dashboard_view -->|"binds actions"| node_dashboard
node_app -->|"registers stage"| node_window_manager
node_app -->|"dispatches CLI"| node_cli_manager
node_user -->|"selects lesson"| node_dashboard
node_dashboard -->|"opens lesson"| node_window_manager
node_window_manager -->|"loads view"| node_student_controller
node_window_manager -->|"loads view"| node_thread_controller
node_window_manager -->|"loads view"| node_collection_controller
node_student_controller -->|"creates and reads"| node_student_model
node_thread_controller -->|"updates and sorts"| node_thread_model
node_collection_controller -->|"operates on"| node_collection_models
node_cli_manager -->|"dispatches lesson"| node_thread_cli
node_cli_manager -->|"dispatches lesson"| node_chatbot
node_chatbot -.->|"sends chat request"| node_api_service
node_dashboard -->|"opens lesson PDFs"| node_pdf_renderer

click node_app "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/App.java"
click node_cli_manager "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/CliManager.java"
click node_dashboard "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/dashboard/DashboardController.java"
click node_window_manager "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/WindowManager.java"
click node_dashboard_view "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/resources/sem3matkul/dashboard.fxml"
click node_student_controller "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan1/controller/MahasiswaController.java"
click node_student_model "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan1/model/Mahasiswa.java"
click node_thread_controller "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan2/controller/ThreadController.java"
click node_thread_model "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan2/model/Thread.java"
click node_thread_cli "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan2/cli/ThreadCli.java"
click node_collection_controller "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan3/controller/CollectionController.java"
click node_collection_models "https://github.com/hylmithecoder/matkul-pbo-sem3/tree/master/src/main/java/sem3matkul/pertemuan3/model"
click node_chatbot "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan4/cli/ChatBotCLI.java"
click node_pdf_renderer "https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/PDFRenderer.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_app,node_cli_manager,node_user toneBlue
class node_dashboard,node_window_manager,node_dashboard_view,node_pdf_renderer toneAmber
class node_thread_cli,node_chatbot,node_api_service toneMint
class node_student_controller,node_student_model,node_thread_controller,node_thread_model,node_collection_controller,node_collection_models toneRose
```

## Components

### Application entry

- [App](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/App.java): `src/main/java/sem3matkul/App.java`
- [CLI dispatcher](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/CliManager.java): `src/main/java/sem3matkul/core/CliManager.java`

### GUI lessons

- [Dashboard](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/dashboard/DashboardController.java): `src/main/java/sem3matkul/dashboard/DashboardController.java`
- [Window manager](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/WindowManager.java): `src/main/java/sem3matkul/core/WindowManager.java`
- [Dashboard view](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/resources/sem3matkul/dashboard.fxml): `src/main/resources/sem3matkul/dashboard.fxml`
- [PDF viewer](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/core/PDFRenderer.java): `src/main/java/sem3matkul/core/PDFRenderer.java`

### CLI lessons

- [Thread CLI demo](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan2/cli/ThreadCli.java): `src/main/java/sem3matkul/pertemuan2/cli/ThreadCli.java`
- [Chatbot CLI](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan4/cli/ChatBotCLI.java): `src/main/java/sem3matkul/pertemuan4/cli/ChatBotCLI.java`

### Lesson logic

- [Student grades](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan1/controller/MahasiswaController.java): `src/main/java/sem3matkul/pertemuan1/controller/MahasiswaController.java`
- [Student grade model](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan1/model/Mahasiswa.java): `src/main/java/sem3matkul/pertemuan1/model/Mahasiswa.java`
- [Thread lesson UI](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan2/controller/ThreadController.java): `src/main/java/sem3matkul/pertemuan2/controller/ThreadController.java`
- [Priority model](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan2/model/Thread.java): `src/main/java/sem3matkul/pertemuan2/model/Thread.java`
- [Collections UI](https://github.com/hylmithecoder/matkul-pbo-sem3/blob/master/src/main/java/sem3matkul/pertemuan3/controller/CollectionController.java): `src/main/java/sem3matkul/pertemuan3/controller/CollectionController.java`
- [Collection models](https://github.com/hylmithecoder/matkul-pbo-sem3/tree/master/src/main/java/sem3matkul/pertemuan3/model): `src/main/java/sem3matkul/pertemuan3/model`

### Other components

- **User**
- **Chat API**

## Connections

- User → App: starts
- App → Dashboard view: loads
- Dashboard view → Dashboard: binds actions
- App → Window manager: registers stage
- App → CLI dispatcher: dispatches CLI
- User → Dashboard: selects lesson
- Dashboard → Window manager: opens lesson
- Window manager → Student grades: loads view
- Window manager → Thread lesson UI: loads view
- Window manager → Collections UI: loads view
- Student grades → Student grade model: creates and reads
- Thread lesson UI → Priority model: updates and sorts
- Collections UI → Collection models: operates on
- CLI dispatcher → Thread CLI demo: dispatches lesson
- CLI dispatcher → Chatbot CLI: dispatches lesson
- Chatbot CLI → Chat API: sends chat request
- Dashboard → PDF viewer: opens lesson PDFs
