Marcus V.
Curving abstract shapes with an orange and blue gradient

Pomodoro App: Solo Uni Project, Grade 1.3

AuthorMarcus Vaitschulis
Published

The Assignment

For the ENIA module in my third semester, we were tasked with building a desktop application using Java and JavaFX. The project was solo — no team to rely on — and the grading criteria emphasized both functionality and code quality.

I chose to build a Pomodoro timer. The Pomodoro Technique — 25 minutes of focused work followed by 5-minute breaks — is something I actually use. Building a tool I'd use myself kept motivation high throughout the project.

Why JavaFX

JavaFX isn't the trendiest UI framework, but it's remarkably capable. Scene Builder provides visual layout editing, CSS handles styling, and FXML separates structure from logic. For a desktop application with moderate complexity, it's a solid choice.

The development environment required some setup, especially on Apple Silicon. Java 21 with Corretto and JavaFX 23 took some configuration, but once running, the development experience was smooth. VSCode with the Java extension handled everything from compilation to debugging.

Working with an unfamiliar tech stack solo taught me more than any group project could. When something breaks, you fix it yourself — there's no one else.

Building the Timer

The core functionality seems simple: count down from 25 minutes, notify the user, then count down from 5 minutes. But the details matter. What happens if the user minimizes the window? How do notifications work across different operating systems? How do you handle pause and resume without drift?

I implemented the timer using Java's animation framework rather than raw threads. This kept the UI responsive and the timing accurate. The display updates every second, but the underlying timer tracks milliseconds for precision.

User Experience Decisions

A Pomodoro timer should be unobtrusive when running but impossible to miss when it's time for a break. I designed the UI to be minimal during countdown — just the timer and basic controls — but prominent when transitioning between states.

Sound notifications work alongside visual ones. The completion sound is distinct but not jarring. Users can customize the work and break durations, and their preferences persist between sessions.

The Result

The project earned a 1.3 — one of the best grades in the course. More importantly, I built something I actually use. Every time I start a focused work session, I use my own Pomodoro timer.

The project demonstrated that unfamiliar technologies become familiar through use. Java wasn't in my comfort zone, but completing this project expanded that zone. That's the real value of academic projects: they push you into territory you wouldn't explore on your own.

Related Posts