04 / Media & data structures · Desktop
ytMP3 · JavaFX
Connecting a desktop interface to a media pipeline.
A JavaFX project combining a binary search tree exercise with a media downloader GUI, MP3/MP4 selection and external process integration.

01 / CONTEXT
Why I built it
I wanted to understand two sides of desktop development: data structure logic and communication with other programs. This project explores connecting JavaFX to yt-dlp and FFmpeg while keeping long-running work off the UI thread.
What it does
- BST value insertion and search exercise.
- Downloader GUI with URL, destination and MP3/MP4 options.
- Thread settings and JSON configuration.
- Background execution, progress reading and cancellation.
Strengths
- Original FXML is preserved, with an archived pre-repair source.
- Process arguments support paths containing spaces without splitting command strings.
- A local fixture makes the media pipeline testable without accounts or databases.
Current limitations
- Available screenshots document the interface; current UI click-through remains incomplete due to capture tool failure.
- Online YouTube playlists and legacy account features are unverified.
- The old EXE is not rebuilt; current use is through source and Maven.
02 / PROCESS
Challenges & lessons
I practiced separating external processes from the JavaFX thread, consuming UTF-8 output and progress, and handling cancellation. In the BST module, words sharing their first letter exposed the need to compare complete values.
Evidence & demo status
JAR build succeeded and 21 tests passed, including MP4 downloads into whitespace paths and real MP3 extraction. FFprobe verified 20-second synthetic outputs. Those results come from tests/CLI, not UI clicks. The gallery uses two existing UI documentation files from the project folder.
03 / DOCUMENTATION
Inside the application
What comes next
Complete UI verification, validate online extraction, then modernize dependencies and native packaging.
Contribution & process +
I independently developed the original application, from its logic to its interface. Codex assisted with recent refinements, testing and portfolio demo preparation. Documentation uses sample data.
