Vision Statement

MyTunes is a simple desktop app that helps people listen to, organize, and enjoy their favorite music, completely without needing the internet.

Intended Users

The MyTunes application is designed for individuals who want a streamlined, offline-focused music management experience. This includes:

Major Functionality

MyTunes provides a clean, modular platform for managing a personal music library with key features designed to enhance usability and organization:

Postmortem

We discuss our experiences in creating MyTunes app and what we learned during the process.

Contributors

of Team 10 - ShiftHappens

Mark Jimenez

Learned how to configure sqlite as a database for Java. Experimented with GUI testing for system tests. Understood Gradle build system on a deeper level.

Gerald Pagcaliwagen

Designing application architecture and package structuring. AGILE workflow of fixing technical debt. Iteration planning and project management.

Shrey Mehta

Learned how to design user interfaces with JavaFX and connect them to a SQLite backend. Gained experience with iterative development and maintaining clear, organized documentation.

Jason Bilinsky

Learned a basic understanding of the JavaFX framework and how to build responsive applications with it. A better understanding of tech debt and when it was ok to introduce tech debt if it meant having a functioning iteration.

Bhavik Jain

Learned how to use Git for collaborative development and version control. Gained experience building user interfaces with JavaFX. Explored Go and Hugo to understand scripting and static site generation workflows.

Project Details

Vision Statement

MyTunes is a simple desktop app that helps people listen to, organize, and enjoy their favorite music, completely without needing the internet.

MyTunes is made for people who like to keep their music on their own computer and want an easy way to sort and enjoy it. When someone opens MyTunes, they can sign in to their personal account and see their full list of songs right away. The app makes it easy to look through music by typing in the name of the singer, the title of the song, the album, the kind of music, or even a word from the lyrics. People can also make up their own labels—called tags—to help group songs however they like.

Users can create playlists by picking songs and giving the list a name, like “Workout Mix” or “Sunday Morning.” Songs in a playlist can be played in order, and tags can be used to gather songs with similar moods or themes. For example, someone might tag songs with “chill,” “party,” or “instrumental” and then look up that tag later to find all the songs that match. These tags work like smart folders that update whenever songs are added or changed.

MyTunes is built for music lovers who still enjoy keeping their own music collection, rather than relying on online music services. It’s great for casual listeners who just want something simple and private, collectors who like sorting music their own way, and anyone who doesn’t want their music choices tracked or shared online.

All the music, playlists, and user settings in MyTunes are saved on the user's own computer. Nothing is stored online, but each user can still sign in with their own account to keep their music and preferences separate. This means users always have access to their music, even without the internet. It also means no ads, no waiting for songs to load, and no risk of losing access if an online service shuts down.

With MyTunes, users are in full control. They can sort music by their own rules, play it their way, and keep everything safe and personal. The app is easy to use and made to fit into everyday life without hassle.

We will consider MyTunes a success if it meets the following goals: search results appear quickly and accurately, even for users with large music collections; during a trial period, nearly all users (at least 99 out of 100) can organize and enjoy their music without losing any saved content; and after several weeks of use, a strong majority (at least 85 out of 100) report that the app is easy to use and helps them find their music efficiently.

Intended Users

The MyTunes application is designed for individuals who want a streamlined, offline-focused music management experience.

This includes:
  • Students and hobbyists who manage local MP3 collections for study or leisure.
  • Audiophiles who prefer organizing music files manually without relying on streaming platforms.
  • Presenters, DJs, or content creators who need customized playlists and quick access to specific songs.
  • Users who prioritize simplicity, control, and privacy over cloud integration or social sharing.

These users value intuitive design, reliable storage, and the ability to personalize their music collection efficiently.

Overview of Major Functionality

MyTunes provides a clean, modular platform for managing a personal music library with key features designed to enhance usability and organization:

  • User Authentication
    Users can securely sign up, log in, and log out, enabling personalized access to their song library, playlists, ratings, and tags.
  • Song Library Management
    Users can add, view, edit, and delete songs by specifying metadata such as title, artist, and genre. All data is saved persistently using an underlying database.
  • Search Functionality
    A dynamic search bar allows users to filter songs in real-time by title, artist, genre, or tag. This feature improves navigation and provides quick access to specific content.
  • Playlist Creation and Organization
    Users can create and name custom playlists, add or remove songs, and prevent duplicate entries. Playlists are tied to user accounts and stored persistently.
  • Song Rating System
    Songs can be rated from 1 to 5 stars per user, enabling users to sort or prioritize music based on personal preference.
  • Tagging System
    Users can create and assign custom tags (e.g., "Workout", "Chill", "Throwback") to songs. These tags serve as additional filters and organizational tools, supporting better categorization beyond genres and playlists.

These features together support a complete offline music management workflow with emphasis on usability, clarity, and modularity.

Postmortem

Retrospective

Improvements from the Iteration 2 Retrospective and how it went?

After the Iteration 2 retrospective, our team identified several key areas for improvement that we aimed to address in the final development cycle. One of the most important changes was the adoption of a formal peer code review process. We established a rule that no code could be merged into the main branch without review and approval from at least one other team member. This approach not only helped catch bugs early but also improved code quality and encouraged collaborative problem-solving.

We also made a conscious decision to narrow the scope of each iteration moving forward. Rather than overcommitting, we limited ourselves to two or three core features per cycle, allowing us to focus on delivering well-tested and fully integrated functionality. This shift in planning helped us manage our time more effectively, especially during a busy academic schedule. Alongside this, we improved our task breakdown process by splitting larger features into smaller, more manageable development tasks. This made it easier to track progress and allowed different members to work in parallel without stepping on each other’s work.

Another major improvement was our commitment to revisiting and refactoring existing code. We recognized that certain areas of the project—especially those developed quickly in earlier iterations—had accumulated technical debt. In Iteration 3, we used our extra time not only to build new features but also to restructure classes, eliminate redundant logic, and improve method readability across the codebase.

These improvements proved highly effective. The peer review process was followed consistently and resulted in fewer integration issues. Our scoped approach to feature delivery kept the team focused and on track. And the refactoring efforts, though not immediately visible in the user interface, significantly elevated the maintainability and professionalism of the overall project. In retrospect, these changes marked a turning point in our development process and provided a strong foundation for future work, both in this course and beyond.

Are there any outstanding bugs?

By the end of the project, the app felt solid. We tested everything from logging in to tagging songs, and even tried to break it by doing weird stuff like adding duplicates, leaving fields empty, or clicking things too fast. It all held up. We caught most issues early thanks to peer reviews and everyone keeping an eye on the big picture. We were happy to reach the end without any major bugs slipping through. The app feels stable and complete, and it held up even when we intentionally tried to break it.

What took the most time? The least? Any surprises?

Wiring up the UI definitely took the longest. Getting scenes to switch properly, keeping controllers talking to each other, and updating tables dynamically took a lot of work. SQLite seemed like it would be the easy part, but integrating it cleanly and handling different user data added more complexity than we expected. On the flip side, the live search feature was a quick win. It came together fast and made the app feel smoother right away. Managing shared state across views? Still kind of a pain.

What did you learn about team or large project development?

We learned how much smoother things go when everyone’s on the same page. It wasn’t just about dividing work. It was about talking things through, making sure features didn’t clash, and reviewing each other’s code before merging. That “don’t merge without a second pair of eyes” rule saved us more than once. We also got better at catching overlap early and planning out work in smaller chunks. Moving forward, those habits like peer reviews, tight scopes, and better planning are definitely coming with us.