# abraham-ny/junkie architecture

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

## Overview

Junkie is a cross-platform Swing desktop converter for Java IDE and build-system metadata. The user selects a project to scan; the Go bridge detects its formats and metadata, which informs independent IDE and build conversion operations. The bridge rewrites configuration files while leaving source code untouched, and streams progress and results back to the UI log. The graph follows the README for major capabilities where excerpts are incomplete; conversion subroutines and some panel callback wiring are represented at the documented subsystem level.

Main entry points: [`src/main/java/com/vitalsoft/junkie/bridge/GoBridgeRunner.java`](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/bridge/GoBridgeRunner.java) (Bridge runner), [`src/main/java/com/vitalsoft/junkie/ui/MainWindow.java`](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/MainWindow.java) (Main window), [`go-bridge/main.go`](https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go) (Command dispatch), [`src/main/java/com/vitalsoft/junkie/ui/ProjectScannerPanel.java`](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/ProjectScannerPanel.java) (Project scanner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop UI"]
  node_window["Main window<br/>[MainWindow.java]"]
  node_scanner_ui["Project scanner"]
  node_project_card["Project details"]
  node_ide_ui["IDE conversion"]
  node_build_ui["Build conversion"]
  node_task_log["Task log<br/>[TaskLogPanel.java]"]
end

subgraph group_java["Java Orchestration"]
  node_runner["Bridge runner"]
  node_json_parser["JSON parser<br/>[JsonParser.java]"]
  node_project_info["Project metadata<br/>[ProjectInfo.java]"]
  node_bridge_message["Bridge messages<br/>[BridgeMessage.java]"]
end

subgraph group_bridge["Go Bridge"]
  node_go_dispatch["Command dispatch<br/>[main.go]"]
  node_scan_engine["Project scan<br/>[main.go]"]
end

subgraph group_conversion["Conversion Work"]
  node_ide_convert["IDE conversion<br/>[main.go]"]
  node_build_convert["Build conversion<br/>[main.go]"]
end

node_user(("User"))
node_project_files["Project config files"]

node_user -->|"selects project"| node_scanner_ui
node_user -->|"requests conversion"| node_ide_ui
node_user -->|"requests conversion"| node_build_ui
node_window -->|"hosts"| node_scanner_ui
node_window -->|"hosts"| node_ide_ui
node_window -->|"hosts"| node_build_ui
node_window -->|"shows activity"| node_task_log
node_scanner_ui -->|"starts scan"| node_runner
node_ide_ui -->|"starts conversion"| node_runner
node_build_ui -->|"starts conversion"| node_runner
node_runner -->|"runs command"| node_go_dispatch
node_go_dispatch -->|"dispatches scan"| node_scan_engine
node_go_dispatch -->|"dispatches IDE conversion"| node_ide_convert
node_go_dispatch -->|"dispatches build conversion"| node_build_convert
node_scan_engine -->|"reads metadata"| node_project_files
node_ide_convert -->|"rewrites IDE files"| node_project_files
node_build_convert -->|"rewrites build files"| node_project_files
node_go_dispatch -->|"streams JSON lines"| node_runner
node_runner -->|"parses messages"| node_json_parser
node_json_parser -->|"creates"| node_bridge_message
node_json_parser -->|"parses scan payload"| node_project_info
node_runner -->|"returns scan result"| node_scanner_ui
node_scanner_ui -->|"displays metadata"| node_project_card
node_window -->|"applies detected IDE"| node_ide_ui
node_window -->|"applies detected build"| node_build_ui
node_runner -->|"dispatches progress"| node_task_log

click node_window "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/MainWindow.java"
click node_scanner_ui "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/ProjectScannerPanel.java"
click node_project_card "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/ProjectInfoCard.java"
click node_ide_ui "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/IDEConversionPanel.java"
click node_build_ui "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/BuildConversionPanel.java"
click node_task_log "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/TaskLogPanel.java"
click node_runner "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/bridge/GoBridgeRunner.java"
click node_json_parser "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/util/JsonParser.java"
click node_project_info "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/model/ProjectInfo.java"
click node_bridge_message "https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/model/BridgeMessage.java"
click node_go_dispatch "https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go"
click node_scan_engine "https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go"
click node_ide_convert "https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go"
click node_build_convert "https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go"

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_window,node_scanner_ui,node_project_card,node_ide_ui,node_build_ui,node_task_log,node_user toneBlue
class node_runner,node_json_parser,node_project_info,node_bridge_message toneAmber
class node_go_dispatch,node_scan_engine toneMint
class node_ide_convert,node_build_convert toneRose
class node_project_files toneIndigo
```

## Components

### Desktop UI

- [Main window](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/MainWindow.java): `src/main/java/com/vitalsoft/junkie/ui/MainWindow.java`
- [Project scanner](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/ProjectScannerPanel.java): `src/main/java/com/vitalsoft/junkie/ui/ProjectScannerPanel.java`
- [Project details](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/ProjectInfoCard.java): `src/main/java/com/vitalsoft/junkie/ui/ProjectInfoCard.java`
- [IDE conversion](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/IDEConversionPanel.java): `src/main/java/com/vitalsoft/junkie/ui/IDEConversionPanel.java`
- [Build conversion](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/BuildConversionPanel.java): `src/main/java/com/vitalsoft/junkie/ui/BuildConversionPanel.java`
- [Task log](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/ui/TaskLogPanel.java): `src/main/java/com/vitalsoft/junkie/ui/TaskLogPanel.java`

### Java Orchestration

- [Bridge runner](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/bridge/GoBridgeRunner.java): `src/main/java/com/vitalsoft/junkie/bridge/GoBridgeRunner.java`
- [JSON parser](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/util/JsonParser.java): `src/main/java/com/vitalsoft/junkie/util/JsonParser.java`
- [Project metadata](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/model/ProjectInfo.java): `src/main/java/com/vitalsoft/junkie/model/ProjectInfo.java`
- [Bridge messages](https://github.com/abraham-ny/junkie/blob/main/src/main/java/com/vitalsoft/junkie/model/BridgeMessage.java): `src/main/java/com/vitalsoft/junkie/model/BridgeMessage.java`

### Go Bridge

- [Command dispatch](https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go): `go-bridge/main.go`
- [Project scan](https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go): `go-bridge/main.go`

### Conversion Work

- [IDE conversion](https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go): `go-bridge/main.go`
- [Build conversion](https://github.com/abraham-ny/junkie/blob/main/go-bridge/main.go): `go-bridge/main.go`

### Other components

- **User**
- **Project config files**

## Connections

- User → Project scanner: selects project
- User → IDE conversion: requests conversion
- User → Build conversion: requests conversion
- Main window → Project scanner: hosts
- Main window → IDE conversion: hosts
- Main window → Build conversion: hosts
- Main window → Task log: shows activity
- Project scanner → Bridge runner: starts scan
- IDE conversion → Bridge runner: starts conversion
- Build conversion → Bridge runner: starts conversion
- Bridge runner → Command dispatch: runs command
- Command dispatch → Project scan: dispatches scan
- Command dispatch → IDE conversion: dispatches IDE conversion
- Command dispatch → Build conversion: dispatches build conversion
- Project scan → Project config files: reads metadata
- IDE conversion → Project config files: rewrites IDE files
- Build conversion → Project config files: rewrites build files
- Command dispatch → Bridge runner: streams JSON lines
- Bridge runner → JSON parser: parses messages
- JSON parser → Bridge messages: creates
- JSON parser → Project metadata: parses scan payload
- Bridge runner → Project scanner: returns scan result
- Project scanner → Project details: displays metadata
- Main window → IDE conversion: applies detected IDE
- Main window → Build conversion: applies detected build
- Bridge runner → Task log: dispatches progress
