template by MediBoss
SECPTable of Contents
App Design
Objective
Create a platform for music listeners to share music they enjoy with others. Whether that be friends and family or random strangers.
Audience
Music listeners who use streaming services(primarily Spotify)
Experience
App will open to a default dashboard of the global feed if not logged in. This will show everyone who publicly shows their music shares. If the user is logged in, it will show the friends feed. There will be a button the quickly add a song to share.
Shared songs will have the ability to listen to a snippet of the song or proceed to the Spotify page for the song.
If the user is clicked on it will bring you to a page showing the user's feed along with a bio and profile picture. On this screen it will have a button to allow private music shares.
Technical
Screens
-
What's Playing
- The landing page
- If not logged in, shows a info panel
- Shows a feed of all friends if signed in, if not shows global feed.
- Actions
- Login/Sign Up
- Share new song
- View own User Profile
- Switch to friends/global feed
-
Feed
- Shows a chronological list of Shared Songs
-
Shared Song
- Shows cover art, song name, artist name, username, and optionally a mentioned user
- Actions
- Preview song
- View on Spotify
- View User Profile
-
User Profile
- Shows profile information
- Profile picture
- Bio
- Favorite Artists
- Shows User Feed
- Actions
- User to User Share
- Follow
- Go back to What's Playing
- Shows profile information
-
Share New Song
- Actions
- Search for song
- Mention a user
- Choose privacy
- Global
- Friends
- User to User
- Actions
External services
- Spotify API
- Strongly relies on Spotify Data
- Song Details(name, artist)
- Song Preview
- Song Search
- User Authentication/Log in
- User Info
- Strongly relies on Spotify Data
Views, View Controllers, and other Classes
-
Views
- playing
- user
- login
- sign-up
- share
- Partials
- feed
- song-details
-
View Controllers
- song
- user
- feed
-
Other Classes
- tbd
Data models
-
User
- _id - ObjectId
- username - String
- email - String
- password - Hashed String
- following - array of ObjectIds
- spotifyUserID - String
-
Song
- _id - ObjectId
- spotifySongID - String
- userID - ObjectId
- mentionID - ObjectId
- privacy - Number - 0: Global, 1: Friends, 2: UsertoUser
MVP Milestones
[The overall milestones of first usable build, core features, and polish are just suggestions, plan to finish earlier if possible. The last 20% of work tends to take about as much time as the first 80% so do not slack off on your milestones!]
Sprint 1 (Day 1)
Defining the MVP:Develop this guideDoesn't have to completely finished
Setup environmentExplore the Spotify APICRUD songsCreateReadDestroy
Sprint 2 (Day 2)
Implementing Users
Explore BCrypt- CRUD user
Create
Sprint 3 (Day 3)
Continue CRUDing Users
Finish creating user viewAllow for updating usernameCreate a button on main page for updating profileFigure out identiconAdd profile picture via identiconAdd name featureBioSCRAP THIS FOR LATERAdd ability to follow
Sprint 4 (Day 4)
Add follow feedAdd mention abilityAdd p2p feedMake it beautifulStart working on front endFigure out tab system
Sprint 5 (Day 5)
starting the polish
Landing Page for non-logged in
Future Transfering this section to issues/projects
- Add user search
- Require password for changing username/email
- Ask if want to change password, require old password
- Double check password when signing up
- Don't allow empty searches
Figure out why navigating to profile doesn't work some time- More info on landing page