Open to work
← All projects

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.

Original UI documentation: downloader screen. Not proof of a completed download.

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.
WHAT WORKS

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.
ROOM TO GROW

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.

WHAT CAN BE DEMONSTRATED

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.

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.

NEXT PROJECTRoomQu ↗