GroupTune – Select A Topic – Facebook Login Dialog



GroupTune – Select A Topic – Facebook Login Dialog

0 0


team-gcc-acm-sdc

ACM Software Design Competition 2014 Slides

On Github wnayes / team-gcc-acm-sdc

GroupTune

ACM SDC 2014 Presentation

Will Nayes Jon Steffl

team gcc

Select A Topic

The Goal

Create a web platform that friends can use to create, develop, and promote their own radio station.

Station Creation

Listeners pick a memorable name to distinguish their channel.

A genre mix is chosen to seed future song selections.

Station Development

A channel creator promotes listeners into influencers, who have say in reviewing songs.

The currently playing song is given thumbs up or thumbs down by active influencers to shape future song selection.

Station Promotion

A station can be as public or private as the creator wants.

Facebook integration provides listeners means to share channels with their friends.

UI Overview

  • Station Creation
  • Station Page
  • Mobile
  • Localization

Facebook Login Dialog

Advantages

  • Listeners will not need to create separate accounts for our service.
  • Immediate access to listeners' profile pictures and names.
  • We can display the stations liked by a listener's friends.

Local Music

Listeners will be able to share their own music through their personal genre.

Localization

Localizing the user interface will allow for listeners in other countries to easy navigate the website.

The HTTP server can return localized resources using the Accept-Language header.

Mobile applications are easily localized through resource files.

Cultural Considerations

The use of thumbs up and thumbs down is not universally accepted as positive in some countries.

Localization can account for this by using other symbols, like ↑ and ↓.

Colorblind Users

Color usage is consistently matched with easily recognizable icons.

The use of red and green for ratings is coupled with the thumbs up and thumbs down icons for this reason.

Blind Users

Using ALT attributes on images throughout is a simple way to increase accessibility.

Avoiding absolute font-size CSS values can help users with reduced eyesight.

Other Considerations

Adding simple keyboard shortcuts for rating songs and chatting could benefit those not using a mouse.

Database Design

ER Diagram

Entities

Our relational model will include 4 entities.

  • User
  • Channel
  • Song
  • Genre

User Entity

Channel Entity

Song Entity

Genre Entity

Relations

Our relational model will include 6 relations.

  • Creator / Influencer
  • Source
  • MemberOf
  • Rating
  • Played

Membership Relations

Source Relation

MemberOf Relation

Rating Relation

Played Relation

NoSQL Usage

Temporarily stored information will be handled outside of the SQL server, using the key-value store Redis.

Session Info

Users connected over a WebSocket connection will have their session information stored in Redis.

A [userid]-session key would hold the session token.

Scalability

Different listeners may be connected to different Node.js servers.

Redis can store a pairing between the user id and the specific server for passing events between Node.js instances.

System Architecture

  • Server Software
  • API Design
  • Scalability

Software

Primary data storage will use a relational database, likely MySQL. Volatile information will be accessed using the key-value store Redis.

To support live notifications, chat, and song synchronization, an API powered by Node.js using Socket.IO will be used.

API Features / Concerns

  • Authentication
  • Chat
  • Song Sync / Selection
  • DMCA Conformity

Authentication

By tying user authentication to the Facebook Login API and other OAuth providers, the complexity of managing user accounts is limited.

We still need to manage socket sessions when listeners visit a channel.

Establishing a Connection

Closing Connections

As each listener leaves the channel, the volatile session and socket information will be removed.

When all sockets for a given channel have been closed, any song selection and sync actions will be canceled.

Chat

Listeners will be able to participate in a live chat with other authenticated members.

Sending and Receiving

Presence Status

Ratings

Listeners will also receive reviews from others in their chat feed.

Rating Events

Song Sync

A critical aspect to the experience is keeping all listeners on the same song and at approximately the same listening progress.

Having a socket connection facilitates this time sensitive demand.

Song Broadcasting

Spotify

  • Existing library of more than 20 million songs - unreasonable to duplicate on our infrastructure.
  • External architecture handling audio streaming demands.
  • We will initially scrape song genre and other information.

SoundCloud

  • Provides the infrastructure for local musicians to upload their own music.
  • Provides a comprehensive streaming API and OAuth.
  • Local musicians have a low barrier of entry into our service.

DMCA Conformity

  • Listeners react to song selections rather than selecting them.
  • Song selection algorithm accounts for artist and album restrictions.
  • Programs are dynamic and not pre-announced.
  • Spotify provides reliable streaming security and region restrictions.

Scalability

Load Balancing

MySQL Sharding