SoundsAllAround is a web application inspired by SoundCloud built using Ruby on Rails and React.js.
SoundsAllAround allows users to:
- Create an account
- Log in / Log out
- Create, edit, view, and delete playlists of tracks
- Follow other users
- Like tracks
- Upload tracks
Objective: Functioning rails project with Authentication
- create new project
- create
User
model - authentication
- user signup/signin pages
- blank landing page after signin
Objective: Playlists can be created, read, edited and destroyed through the API. Tracks can be added to playlists.
- create
Playlist
andTrack
model - seed the database with a small amount of test data
- CRUD API for playlists (
NotesController
) - jBuilder views for playlists and tracks
- setup Webpack & Flux scaffold
- setup
APIUtil
to interact with the API - test out API interaction in the console.
Objective: Playlists can be created, read, edited and destroyed with the user interface.
- setup the flux loop with skeleton files
- setup React Router
- implement each Playlist and Track component, building out the flux loop as needed.
-
PlaylistIndex
-
PlaylistIndexItem
-
PlaylistForm
-
AllTrackIndex
-
TrackIndexItem
-
LandscapeTrackItem
-
- setup simple belongs_to/has_many association between playlists and tracks for testing purposes
Objective: Existing pages (including signup/signin) will look good.
- create a basic style guide
- position elements on the page
- add basic colors & styles
Objective: Playlists have many tracks, tracks can be on many playlists. Users can follow other users, and like tracks. Tracks and playlists can be searched
- create
follows
andlikes
joins tables and concerns - do the same for tracks_of_playlists, replacing previous playlist-track associations
- build out API, Flux loop, and components for:
-
follow
andlike
CRUD -
FollowedTracksIndex
-
LikedTrackIndex
-
SearchIndex
-
LandscapeTrackItem
(preliminary, to be finished later)- searching for tracks and playlists
-
- Use CSS to style new views
- create more seed data
Objective: Tracks and Playlists can be played
- give tracks a sound_url column, to which a
GET
request can be made for playing sound (using Web Audio API, or that's how I hope it works) - build out API, Flux loop, and components for:
- playing a track
- playing a playlist
objective: Make more prettier. (Users have profile pictures, tracks have photos and waveform visuals)
- add photo_url column for track and user
- use wavesurfer.js to produce waveform visualization
- Style all of the new elements
objective: Make the site feel more cohesive and awesome.
- Get feedback on my UI from others
- Refactor HTML classes & CSS rules
- Add modals, transitions, and other styling flourishes.
- possible animations
- Pagination / infinite scroll
- Users can record sound to upload as tracks
- Multiple Sessions
- Implement an algorithm for track suggestions (I have an idea for this).