Project 2: BaDTunes Design

CS290F Fall 2006 - UCSB Computer Science - Thorsten von Eicken

Jump to: navigation, search

Contents

Project Name

BaDTunes

Group Members

  • Brett Stone-Gross (bstone@cs)
  • Dominic Metzger (metzger@cs)

Description

We will be developing a music store that enables a user to search by artist, song, or album. Customers will be able to select individual songs and create a custom playlist with the option of purchasing it on a CD. We will also provide the ability to share their playlists with other users, stream music samples and rate songs (atomic transaction, see reasoning under #Functionality).

Data Sources

Functionality

Expected

Users Functionality

  • Users will be able to add ratings for playlists or songs and be able to change their own rating
Atomic transaction description:
1. Jane creates a rating for a song
2. Jane modifies here existing rating
3. Joe creates a rating for a song (e.g. 5/5 stars) concurrently with Jane's rating modification
4. Since we are keeping track of the number of ratings and the total rating score for each song 
   (to improve performance), Jane's operation must read the previous values in order to update the
   average and must be atomic due to the fact that Joe's rating must not update the database in the
   middle of Jane's rating modification


  • Search by Artist, Album, Song
  • Browse music
  • View top rated songs
  • View all ratings for particular songs
  • Create custom playlists
  • Option to purchase a CD consisting of a custom playlist

Admin Functionality

Add/Remove/Edit/List For:

  • Ratings
  • Users
  • Music
  • Orders

Dream

  • Have embedded music or URLs to other web services so that users can listen to their playlists.  Done
  • Share/View other users custom playlists  Done
  • Display album artwork (if available)

Models/Tables

  1. orders: stores customer, shipping, and payment information
  2. line_items: stores details of ordered products per order id
  3. line_items_orders: used to link line-items to orders
  4. musics: stores artist, album, song, song price, average rating statistics, and identifications for creating streaming music URLs
  5. line_items_musics: links line_items to music products
  6. users: stores login/account information
  7. orders_users: links orders to users table
  8. ratings: stores text reviews and a score based per song per user (out of 5 stars)
  9. ratings_musics: links ratings table to music table
  10. schema_info: stores current migration version number
  11. sessions: stores session information

Controllers

  1. Account: Login/Create accounts, using http://www.agilewebdevelopment.com/plugins/acts_as_authenticated to handle it. Admin functionality: Edit/Create/List/Delete Users
  2. Admin: Administrative layout, Edit/Create/List/Delete Music / Store inventory
  3. Store: Store layout, Add/Remove Items To/From Cart, Checkout
  4. Ratings: Read Ratings, Edit Ratings, Create Ratings, Show Ratings
  5. Musics: Search by Album, Artist, and Song; Browse Music alphabetically / Top 10
  6. Orders: User Functionality: Display User CDs (Orders); Admin Functionality: Edit, Create, Delete, List
Personal tools