An old-style desktop playlist manager and music player, built with JavaFX.
Project for the Software Architecture Design course - MSc in Computer Engineering, University of Salerno (UNISA) - Academic Year 2025/26 - Team 18.
YAMPMan is a desktop application for managing playlists and playing music. It lets you organize your track library, create and manage playlists, and control playback (play/pause/stop, next/previous track, shuffle and loop).
The project has an educational purpose: the main goal is to apply software design principles, architectural patterns, and a structured agile development process in practice. The application is not intended to be fully functional upon completion of the project.
Development followed the SCRUM agile framework, organized into a pre-game phase (vision, requirements and architecture definition) followed by a series of incremental sprints. All process documentation lives in the docs/ folder and mirrors these phases.
| Phase | Document |
|---|---|
| Pre-game | Pre-Game document |
| Pre-game | Software Architecture document |
| Sprint 1 | First Sprint report |
| Sprint 1 | First Sprint presentation slides |
| Sprint 2 | Second Sprint report |
| Sprint 2 | Second Sprint presentation slides |
| Sprint 3 | Third Sprint report |
| Sprint 3 | Third Sprint presentation slides |
Sprint backlog planning and task tracking are managed on Trello:
The team chose an MVC (Model-View-Controller) architecture with a Layered Model: the Model is internally split into a Service layer (application logic) and a Repository layer (data persistence), keeping the domain decoupled from both the UI and the storage.
- View - FXML files +
yampman.css. - Controller - JavaFX controllers (one per view), wiring the View to the Services.
- Model
- Service layer - application logic (
TrackService,PlaylistService,PlaybackService). - Repository layer - data persistence (Java serialization to
.serfiles:TrackRepository,PlaylistRepository). - Domain -
Track,Playlist,PlaybackState,PlaybackMode, ...
- Service layer - application logic (
On top of this, several GoF design patterns are applied:
- Strategy - interchangeable playback order:
Sequential,Shuffle,Loop. - State - player state handling:
Playing,Paused,Stopped. - Observer - playback update notifications (
PlaybackObserver).
- JDK 25
- Maven
JavaFX and JUnit are downloaded automatically by Maven.
From the project root:
mvn clean package # build
mvn test # run tests
mvn javafx:run # run the appDeveloped by Team 18.
| Name | GitHub |
|---|---|
| Francesco Peluso | @francescopeluso |
| Francesco Pisacane | @FraPis03 |
| Alessandro Tedesco | @Teddyno |
| Silvio Ventura | @frncy01 |
Developed for educational purposes for the Software Architecture Design course (UNISA, A.Y. 2025/26).
