# almun205/cleandesk architecture

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

- Interactive diagram: https://gitdiagram.com/almun205/cleandesk
- Repository: https://github.com/almun205/cleandesk

## Overview

CleanDesk is a PostgreSQL-backed desktop board and card application. The likely user workflow is interacting with the board UI to manage cards, with persistence in PostgreSQL. The tree identifies domain, sorting, event, and persistence components, but no source excerpts establish their call relationships; the only documented runtime relationship is automatic schema creation at application startup.

Main entry points: [`src/main/java/org/example/Main.java`](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/Main.java) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Desktop interaction"]
  node_ui["Board UI"]
  node_card_dialog["Card creation<br/>[NewCardDialog.java]"]
  node_transfer["Card transfer"]
end

subgraph group_domain["Board domain"]
  node_board["Board model<br/>[Board.java]"]
  node_cards["Card types"]
  node_factory["Card factory<br/>[CardFactory.java]"]
  node_sorting["Sort strategies"]
end

subgraph group_runtime["Application runtime"]
  node_main["Application entry<br/>[Main.java]"]
  node_service["Board service<br/>[BoardService.java]"]
  node_events["Board events"]
end

subgraph group_storage["Persistence"]
  node_repositories["JOOQ repositories"]
  node_db_manager["Database manager"]
end

node_user(("User"))
node_postgres[("PostgreSQL")]

node_main -->|"creates schema at startup"| node_postgres

click node_main "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/Main.java"
click node_ui "https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/ui"
click node_card_dialog "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/ui/NewCardDialog.java"
click node_transfer "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/ui/CardTransferHandler.java"
click node_service "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/service/BoardService.java"
click node_board "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/model/Board.java"
click node_cards "https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/model"
click node_factory "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/factory/CardFactory.java"
click node_sorting "https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/strategy"
click node_events "https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/observer"
click node_repositories "https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/persistence"
click node_db_manager "https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/persistence/DatabaseManager.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_ui,node_card_dialog,node_transfer,node_user toneBlue
class node_board,node_cards,node_factory,node_sorting,node_postgres toneAmber
class node_main,node_service,node_events toneMint
class node_repositories,node_db_manager toneRose
```

## Components

### Desktop interaction

- [Board UI](https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/ui): `src/main/java/org/example/cleandesk/ui`
- [Card creation](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/ui/NewCardDialog.java): `src/main/java/org/example/cleandesk/ui/NewCardDialog.java`
- [Card transfer](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/ui/CardTransferHandler.java): `src/main/java/org/example/cleandesk/ui/CardTransferHandler.java`

### Board domain

- [Board model](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/model/Board.java): `src/main/java/org/example/cleandesk/model/Board.java`
- [Card types](https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/model): `src/main/java/org/example/cleandesk/model`
- [Card factory](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/factory/CardFactory.java): `src/main/java/org/example/cleandesk/factory/CardFactory.java`
- [Sort strategies](https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/strategy): `src/main/java/org/example/cleandesk/strategy`

### Application runtime

- [Application entry](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/Main.java): `src/main/java/org/example/Main.java`
- [Board service](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/service/BoardService.java): `src/main/java/org/example/cleandesk/service/BoardService.java`
- [Board events](https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/observer): `src/main/java/org/example/cleandesk/observer`

### Persistence

- [JOOQ repositories](https://github.com/almun205/cleandesk/tree/main/src/main/java/org/example/cleandesk/persistence): `src/main/java/org/example/cleandesk/persistence`
- [Database manager](https://github.com/almun205/cleandesk/blob/main/src/main/java/org/example/cleandesk/persistence/DatabaseManager.java): `src/main/java/org/example/cleandesk/persistence/DatabaseManager.java`

### Other components

- **User**
- **PostgreSQL**

## Connections

- Application entry → PostgreSQL: creates schema at startup
