MusicSpot Analysis

WPF Application Analysis


1. Introduction

1.2. What is the concept of the application?

The application is named "MusicSpot". It is designed to be an online music store where buyers can buy different types of music from 3 different media (CD, Cassette and vinyl). Aside from e-commerce; MusicSpot strives to be an interactive application allowing users to like their favorite releases, wishlist products and add products to their online shopping cart. The application is also able to enhance user exploration thanks to a built-in recommendation system that adapts to individual taste. The three core pillars of MusicSpot are: e-commerce, user interactivity, and adaptability.

1.3. What is/are the (main) goal(s) of the application?


2. Core features

2.1. Minimum requirements/"Nice to have"

2.1.1. Users

Nice to have

2.1.2. Admin

2.2. Musicspot functionality

2.2.1. User interaction

2.2.2. Sales


3. Class description + Explanation

3.1. Releases

Description. The release class is one of the core entities of the application. It represents a piece of music which can be one of the following formats: Extended Play (EP), Album, Single. A release will always be connected to 3 products. These products represent the release in different media (Vinyl, CD & cassette). The release class is fundamental for:

  • The recommendation system. Users will receive release recommendations based on the releases they liked.
    (=> This will be implemented via a recommended page in wpf, featuring a listbox of releases with the genre of the releases liked by the user).

  • User interactivity. Users will be able to like releases. The releases they liked will be stored in a “likelist” (which is a property of account) along side shoppingcart and whishlist.

  • E-commerce. Releases have products linked to them; these products can be “bought” and wishlisted by users.

3.2. Account

Description. The account class will be a representation of all the users of the application, including admin. Account has some crucial properties linked to it such as wishlist, shoppingcart & likedlist; fundamental for the functionality of the application as we can track exactly which releases are liked/purchased/wishlisted as long as it is connected to an account. The way we seperate users from admins is via a property named “isadmin”.

0 = User
1 = Admin

Depending on it’s value, will certain pages/button become visible. Admins will be able to access pages meant to oversee users and releases, alongside buttons for the execution of crud operations.


3.3. Genre

Description. The genre class defines the main genre and subgenre of a release. A release has a list of class Genre containing a genre/subgenre combo.

Genre is therefore a table made by merging table subgenre and table genretype together. By always specifying subgenre, will recommendations be more granular as they can filter on genre and subgenre.


3.4. Product

Description. The product class will represent the items users can buy. Products are always linked to a release, as they represent the release in 3 different formats: Vinyl, Cassette and CD.

It contains basic properties such as price, stock, …


3.5. Purchase

Description. A list of a user’s transaction history.
Purchase serves a bigger purpose for admin, as this information would normaly be used in business reports. The recommendations will only base themselves on what the user has liked, not what is purchased.