Please enable JavaScript.
Coggle requires JavaScript to display documents.
spotiDJ - Coggle Diagram
spotiDJ
Impacts
DJs are able to interact with others in the industry (to help them gain more exposure, learn new tips + tricks, learn about events + opportunities, etc.)
App is free, so could potentially reduce sales for other paid apps of programs that have similar functionality
DJs can easily find songs for events they may not be very familiar with
DJs can share setlists with others to promote their work and gain more exposure in the industry
Partnership with Spotify will boost Spotify's user count
DJs can find setlists that others have made and save them to their device (to perhaps use themselves)
DJs can easily create their own setlists by looking at genres and musical features of tracks
User problem
Rocko (rising DJ looking for more work)
Wants more exposure to his work (so he can become a famous DJ) -- therefore wants plenty of ways to interact with others in the industry and share his own profile + setlists
Brittney (successful music producer)
Wants there to be a way for the talents of new DJs to be showcased
Wants ways for her competitions and jam sessions to be advertised to all users of the app so that she can find fresh talent
Mika (high school student DJing on the side)
Is only familiar with one genre (hip hop) so wants ways to easily select music depending on the event type
Developer problem
User interface
Usability principles
Australian accessibility standards
Page titles are appropriate for page content [learnability]
Page titles are different for each page [learnability]
Every page uses headings (to separate different functionalities and types of content) [learnability, utility]
Each page has a meaningful hierarchy (using levels, headings, etc.) [utility]
Text fields have a label to let the user know what they need to input [learnability]
Fields that are mandatory are clearly indicated so [learnability, safety]
Colour is not used as the only means of conveying information (such as indicating which fields in a form are mandatory) [accessibility]
The input format is specified for the user (eg. a date might require a year-month-day format) [effectiveness, safety]
Error messages and validation messages are clear and specific [learnability, safety]
Errors do not cause the user's input to be reset [safety, effectiveness]
Instructions are provided for the user whenever input is required from them [learnability]
Text transcripts are provided for audio and video content [accessibility]
Appropriate colour contrast between text and background [accessibility, effectiveness]
5 second time limit for moving or flashing content (and this content is able to be disabled by the user) [accessibility]
Spotify partner guidelines
Space between Spotify icon and wordmark is not too large or too small (to ensure it looks legitimate to users) [utility]
Spotify logo has a large enough 'exclusion zone' to ensure legibility [effectiveness]
The Spotify wordmark is never used without the Spotify logo (to ensure legitimacy) [utility]
The Spotify logo is at least 70 pixels wide [accessibility]
The Spotify logo is only green when the rest of the page content is has a grayscale colour palette, otherwise use the black and white version of the logo -- the colour/appearance of the logo cannot be edited in any other way [utility]
Logo is only placed in either one of the corners of a page or in its centre [utility]
Spotify green is used (#1DB954) to show app's partnership with Spotify [learnability]
Features
Search tracks
Search bar at top of page that allows songs to be searched (using their title)
When search bar is not in use, there is a grid-like collection view for browsing genres (clicking on one genre lists all songs that fall under it in the same way songs are listed after searching with the search bar) -- also an option here to view the full library of songs
Options to sort results by title, duration, tempo, danceability, energy, loudness, speechiness, acousticness, instrumentalness, liveness, and valence
Options to filter results based on suitability for event type (determined by musical features of each song)
Clicking on a track opens a pop-over window with information about that track (ie. title, duration, and musical characteristics) and a button to add that track to one of the user's setlists
User profile
Small dashboard for viewing information about upcoming events, competitions, and other announcements
Users can chat with other users (DMs) -- a list of chats is shown below the profile + dashboard
User can view their own profile (username, profile image)
Button in navigation bar to log out, which takes user back to the log in page
Setlists
Table view containing user's own setlists and setlists that they have followed (separated by headings)
Search bar at top of page for search setlists by ID, name, or username
Clicking a setlist opens a new screen
List of tracks in the setlist that shows each track's title, genre and duration
Header contains summary information -- setlist name, creator (username), ID and total duration
Button in navigation bar to share the setlist with others
Clicking on the username in the header opens a small popover window with the user's profile (username, profile image), and a button to message them
Button to follow/unfollow the setlist (if it is not one the user made themselves)
Options to rename or delete setlist (if it is one of the user's own)
Button in navigation bar to create a new setlist that opens an alert for the user to enter the new setlist's name
Sign up / log in
First screen shown when the user initially launches the app
Asks user to enter their username and password, pressing 'log in' button validates the information and closes the log in screen
Button at bottom for creating a new user account, which then opens a screen asking for the user to create a username, password and validate their password -- clicking the 'sign up' button then closes the screen
Coding environment
Key algorithms
Filter songs based on their suitability for dance parties, weddings and restaurant dining (determined by comparing each song's musical features to a high/low threshold)
Calculation of setlist duration (summing durations of all songs in the setlist and converting from milliseconds to hours/minutes/seconds)
Setlist searching: user's search query needs to be checked against setlist IDs, names and usernames in in the SQL database
User account creation: username uniqueness needs to be validated, need to check that user has entered password correctly (they are asked to enter it twice) and then add their username and password to the SQL database
Development tools
Language: Swift, SQL
Database: SQLite3 (and terminal)
Xcode IDE
Data
Required app data
Tracks
Title
Duration
ID (from Spotify)
Genre
Musical features: danceability, energy, loudness, speechiness, instrumentalness, liveness, valence, tempo
Setlists
Name
Tracks
Creator (username)
Setlist ID
Users
Username
Password
Profile picture
Data storage + retrieval
Database is a relational database
Database is generated by importing data from a .csv file into an SQLite database
Data is stored and retrieved from the SQLite database
Client problem
Requirements
Features
Browsing music (including sorting based on genre and event suitability, and setlist searching by name, username or ID,
Creating music setlists (including naming them, adding tracks, sharing them with others, and viewing summaries of the setlist that details the duration, ID, song titles, etc.)
Creating and browsing user profiles (including a way to connect with others and having profiles saved in the database)
UI and UX
Must comply with Australian accessibility guidelines
Must follow Spotify branding guidelines
Must appropriately attribute images used and comply with copyright law
Responsive, clear and consistent UI
Must contains screens for browsing/filtering tracks, creating setlists, searching/viewing setlists, and creating user profiles
Must comply with the Privacy Act 1988
Data
Database must allow users to view information about tracks
Must allow users to create, store and view setlists
Must include user profiles
Must use SQL queries to establish the database, filter tracks, and view track info, setlists and user profiles
Constraints
Up to 8 weeks to plan, design, develop and generate a functional mobile application
Must be a mobile application and will be primarily developed for iPhones (but the UI should be easily able to be recreated for other devices if required) -- smartphones are preferred because it will allow DJs to create setlists and connect with others no matter where they are
Comparable + competitor apps
Mixcloud
Users are able to curate their own playlists and share them with others
Able to leave comments on others' playlists (and can chat with other users about the playlist there too)
Able to browse songs, playlists and podcasts across a wide variety of genres
Users can follow DJs and radio stations and can choose to subscribe to a DJ's channel
Users can access 'back catalogues' of DJs and radio stations
DJs can go live and interact with their fanbase
Perfect Playlist For Spotify
Songs on Spotify are analysed according to their musical qualities (eg. danceability, energy, acoustics, loudness, tempo, etc. -- each quality is given a value)
Can filter songs based on musical qualities
Can set a 'progression curve' for a particular musical quality when creating a playlist to sort the songs according to this curve
Able to create 'scenes' -- a mix of pre-determined sorting and filtering settings that can be applied to any playlist; ideally each scene is created for a particular setting/activity
Provides ready-made presets for progression curves and scenes for the user to use for their own playlists for as a template