A real-time, votable, democratized music queue on iPad and iPhone using Spotify

Overview

logo

Queue'd Music

Queue'd is the best way to enjoy music with your friends. Add your favorite songs to a shared music queue at your favorite bars, restaurants and get-togethers, then vote to decide what plays next.

Music has an incredible way of setting the tone for any gathering. With Queue'd, the crowd takes control, collectively deciding what songs play, and in what order they are played in.

Connect with your Spotify account and add music from your favorite playlists, or search for any song you'd like, then add it to the queue with one touch. Vote up or down on any song in the queue, and control the flow of music with the help of those around you.

Read more information on our website.

What is this?

Queue'd is an application that creates a shared music queue, based on location. A 'venue' β€” for example, a bar β€” can create an account using the iPad Admin version of the app. This allows them to set up a location, and create a democratized music queue for others to 'check in' to, and begin adding music.

See more on the iPad Admin app

The iPhone version of the app is for patrons β€” in this example, the bargoers. Users can sign in using Spotify, Google, or enter as a Guest. Once 'checked in' to their location of choice, users can see and manipulate the queue by voting, adding songs, or purchasing vote packages to boost their song selections.

See more on the iPhone app

Getting Started

This project is a fully functional system, front to back...well, kinda. I provide the source code for the app on both iPhone and iPad, as well as examples for some backend code that you will need in order to have a fully functional version of the app(s).

For example, the app needs a token exchange service to use the Spotify SDK, and some cloud functions for creating and adding payments and payment methods to Stripe. In addiiton, the app uses Firebase to hold it's real-time, votable queue. Running the code and using the apps will begin to create your schema since Firebase will create nodes where they don't exist previously, if told to do so. However, it is assumed you know how to get a Firebase project up and running, since the app will also require your own GoogleService-Info.plist file to properly function.

You might be asking yourself β€” why release this entire system? Well, as with everything, there's a story...

Prerequisites

IDE

  • XCode 9+ (preferrable)
  • Swift 3.3+

External Products

  • Spotify Account
  • A Cloud Platform Account (Google, AWS, Azure, etc)
  • Firebase Account
  • Stripe Account (if you want to enable payments)

It may also be beneficial to have your own website so you can deploy your own version of Terms & Conditions and direct support requests to your domain email.

Installing

Since this is a full application, the best way to run it and make it your own is to download the .zip manually.

Running The Project

In order to run, you need to get a few things set up. Setup the accounts from the External Product section above, then roughly follow these steps:

  1. Create a Spotify Developer Account, to fully run the music system you will need Premium. Then, plug in your client id to the source code.
  2. Prepare a token exchange service (I used Heroku) and deploy the ruby files to run your exchange. Plug in your endpoints to the app.
  3. Create a Firebase project, include the GoogleService-Info.plist file from your project in the app files.
  4. Create a Stripe Account, and include your keys in the source code.
  5. Using a backend service (I used GCP), create and deploy the necessary cloud functions to power Stripe transactions, queue manipulation and more.

Built With

Authors

Ryan Daulton

License

This project is licensed under the Apache 2.0 License - see the LICENSE.md file for details

You might also like...
An iOS and macOS audio visualization framework built upon Core Audio useful for anyone doing real-time, low-latency audio processing and visualizations.
An iOS and macOS audio visualization framework built upon Core Audio useful for anyone doing real-time, low-latency audio processing and visualizations.

A simple, intuitive audio framework for iOS and OSX. Deprecated EZAudio has recently been deprecated in favor of AudioKit. However, since some people

A Spotify clone created using SwiftUI
A Spotify clone created using SwiftUI

Spotify Clone Its a Spotify clone created using SwiftUI. Deployment To deploy th

A tiny menu bar app detecting the chords of the songs you are listening on iTunes or Spotify.
A tiny menu bar app detecting the chords of the songs you are listening on iTunes or Spotify.

ChordDetector A tiny menu bar app that listens iTunes and Spotify to detect chords of songs! Demo Features iTunes and Spotify support. Saves up to 20

A simple Spotify lyrics viewer menu bar app for macOS in Swift 3
A simple Spotify lyrics viewer menu bar app for macOS in Swift 3

lyricsify This is a simple macOS menu bar application that shows you the lyrics of current playing spotify track. All the lyricses are from Wikia webs

HomeHub - Swift app to control my home's smart devices + show spotify current playback
HomeHub - Swift app to control my home's smart devices + show spotify current playback

HomeHub iPad app to control my home's smart devices + show spotify current playb

RHPreviewCell - I envied so much Spotify iOS app this great playlist preview cell 😍
RHPreviewCell - I envied so much Spotify iOS app this great playlist preview cell 😍

I envied so much Spotify iOS app this great playlist preview cell 😍, I decided to create my own one 🌢. Now you can give your users ability to quick check what content is hidden under your UITableViewCell. Great think is that this Library not requires 3D Touch support from user deviceπŸ’₯.

Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture.
Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture.

Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern 🎨 and MVVM architecture πŸ— . Made with love ❀️ by Sameer Nawaz

MusicPlayer - Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture
MusicPlayer - Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture

Skailer 🎧 Beautiful Music Player app built using SwiftUI to demonstrate Neumorp

DrumPadPlayground - Starter Project and Final Project for AudioKit DrumPad Playground App built using Apple's Swift Playgrounds on the iPad
Comments
  • Backend: Remove Song from Queue

    Backend: Remove Song from Queue

    Create a backend function that monitors and deletes songs that drop below a determined vote threshold.

    General Architecture Idea: onWrite() to voteCount in the queue, trigger a function that checks if

    • the voteCount is < -10 (?)
    • AND if voteCount < ( usersCheckedIn.count * 0.25) ?

    Perhaps delete a song if it falls past a negative vote balance based on a ratio of checked in users?

    enhancement help wanted server 
    opened by rldaulton 1
  • iPad: Transfer Balance to Bank

    iPad: Transfer Balance to Bank

    Create a cloud endpoint that allows a user to transfer their wallet/escrow balance to their bank account on file

    For help, see: https://stripe.com/docs/connect/payouts

    enhancement 
    opened by rldaulton 0
  • iPhone: Taptic & Audio Feedback

    iPhone: Taptic & Audio Feedback

    Taptic Engine

    Use an enum to add some taptic engine functionality to small feature points throughout the app:

    public enum Vibration {
          case Light
          case Medium
          case Heavy
      
          @available(iOS 10.0, *)
          func hapticFeedback() -> UIImpactFeedbackGenerator {
              switch self {
              case .Heavy:
                  return UIImpactFeedbackGenerator(style: .heavy)
              case .Medium:
                  return UIImpactFeedbackGenerator(style: .medium)
              case .Light:
                  return UIImpactFeedbackGenerator(style: .light)
              }
          }
    }
    
    

    And implement a global func API using:

    @available(iOS 10.0, *)
       public func withHapticVibration(_ intesity: Vibration) {
           intesity.hapticFeedback().impactOccurred()
    }
    
    

    Sounds

    The already implemented SwiftySound file will allow for quick sounds to be played.

    For Example, using: Sound.play(file: "dog.wav") or Sound.play(url: fileURL)

    enhancement 
    opened by rldaulton 0
  • iPhone: Crash - App Background Re-Enter

    iPhone: Crash - App Background Re-Enter

    When app has been backgrounded for a while and the user is still checked in, once app enters active state / focus again, crash.

    This is the only observable patter when finding this crash

    bug 
    opened by rldaulton 0
Releases(1.0)
Dead-simple queue-oriented client for Spotify

Spotiqueue A terribly simple macOS app for keyboard-based, queue-oriented Spotify use. Many years ago i built a version which relied on a now-deprecat

paul 74 Dec 3, 2022
Swift-music - swift-music is a swift package that provides an easy-to-use API for music related developments.

?? swift-music Introduction swift-music is a swift package that provides an easy-to-use API for music related developments. Currently available module

Jin Zhang 4 Feb 8, 2022
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

null 104 Jan 7, 2023
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multiplatform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usefu

Keith Bromley 7 Oct 10, 2022
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multi-platform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usef

Keith Bromley 4 Dec 24, 2022
macOS app that allows the control of Spotify and AppleMusic/iTunes music playback from the menu bar.

PlayStatus is a simple macOS app that allows the control of Spotify, Apple Music(macOS 10.15+) and iTunes including iTunes Radio/Beats1 playback from

Nikhil Bolar 114 Dec 28, 2022
Classical music front-end for Apple Music: iOS app

concertino_ios Concertino is a classical music front-end for Apple Music. It's splitted in several projects. This one provides only the iOS app. (Ther

Open Opus 107 Dec 22, 2022
iOS music player app that downloads music from the internet, even YouTube

About YouTag is an iOS music player app that downloads music from the internet, even YouTube, and manages it in a local library. Music videos can also

null 263 Jan 8, 2023
Voice Memos is an audio recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Swift.

VoiceMemos Voice Memos is a voice recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Sw

Zhouqi Mo 322 Aug 4, 2022
Queue management system for AVSpeechSynthesizer

QHSpeechSynthesizerQueue Queue management system for AVSpeechSynthesizer Installation Cocoapods Add this to your Podfile: pod 'QHSpeechSynthesizerQueu

Quentin Hayot 42 Dec 17, 2021