Home

Awesome

Downbeat

https://downbeat-app.herokuapp.com

Main Page

Downbeat is a Spotify inspired web application streaming music player. Using Ruby on Rails, React, Redux, and PostgreSQL, this application was designed and built from the ground up in 10 days.

Features

Secure User Authentication

Continuous Play

Sample Gif

The audio player was implemented using Howler.js, a javascript library for web applications. Because Howler has no UI features, the UI for the player was implemented mainly using jQuery, HTML and CSS.

The ability to drag the seek and volume bars was implemented using React Draggable, a wrapper library that uses CSS transforms to allow DOM elements to be draggable. Combined with Howler and jQuery, I was able to give the full UX for the volume and seek bars.

  const fullWidth = $('#seek-bar').width();
  const barWidth = parseInt($('#sliderBtnSeek').css("transform").split(',')[4].slice(1));
  $('#progress').css('width', barWidth);
  const seekTime = (barWidth / fullWidth) * window.sound.duration();
  this.setState( { deltaXSeek: barWidth } );
  window.sound.seek(seekTime);

Playlist CRUD

Playlist CRUD

Add and Remove Songs

Follow other playlists

Follow Playlists

Search

Search

If a user types quickly while searching, this would cause slow, early search results based on the beginning of the query string to be displayed instead of the full query string. This is solved by delaying ajax requests until a specified amount of time has passed since the last request.

this.dbSearch = lodash.debounce((query) => this.search(query), 250);

Enhancements