Skip to content

francescopeluso/SoftwareArchitectureDesign-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YAMPMan - Yet Another Music Player Manager

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 screenshot


What is this project

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 process: SCRUM

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.

Documentation

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

Design assets

Work management

Sprint backlog planning and task tracking are managed on Trello:


Architecture

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 .ser files: TrackRepository, PlaylistRepository).
    • Domain - Track, Playlist, PlaybackState, PlaybackMode, ...

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).

Requirements

  • JDK 25
  • Maven

JavaFX and JUnit are downloaded automatically by Maven.

Build, test and run

From the project root:

mvn clean package   # build
mvn test            # run tests
mvn javafx:run      # run the app

Authors

Developed by Team 18.

Name GitHub
Francesco Peluso @francescopeluso
Francesco Pisacane @FraPis03
Alessandro Tedesco @Teddyno
Silvio Ventura @frncy01

License

Developed for educational purposes for the Software Architecture Design course (UNISA, A.Y. 2025/26).

About

Software Architecture Design team project - MSc Computer Engineering @ UNISA - Academic Year 2025-26

Topics

Resources

Stars

Watchers

Forks

Contributors