Realtime voting applications

What it does

The application allows users to text in or use the IVR to vote for their favorite artists. As these choices are processed they are shown on the poll page in real-time. You can watch the dashboard to see:

  1. How many votes have been received so far
  2. Individual Votes on a pie-chart
  3. Where are the voters located

Once the poll administrator decides to end the poll, the page will declare the winner and start playing music from that artist using a media source (Soundcloud, Spotify).

Extra: The administrator also has the ability to chain more polls, this is currently only integrated with Soundcloud, so as soon as the music ends on the soundcloud widget, the page will refresh and will display information on the next available poll.

How I built it

The webapp has been developed using Spring Boot on Java with Redis as the persistence layer. Below is a list of APIs I used

  • Nexmo API:
  • Nexmo SMS
  • Nexmo Callback
  • Nexmo IVR
  • Nexmo Number Insight


  • PubNub Java API
  • PubNub JS
  • PubNub EON charts

Other APIs:

  • Google GeoLocation API
  • Mapbox
  • SoundCloud
  • Spotify
  • Jedis
  • Odometer JS

Challenges I ran into

  • Detecting when sound stops playing.
  • Ability to maintain score by region

Accomplishments that I'm proud of

  • Maintaining scores by Region and Choice
  • Using Redis ZSET
  • Using EON Charts
  • SoundCloud widget and API

What I learned

  • Charting with EON
  • SoundCloud API

What's next for PlayMySong

  • Timed based polling
  • Display Artist Information
  • Playing videos


Share this project: