GithubHelp home page GithubHelp logo

hyprrun's Introduction

HyprRun

Codebase for HyprRun app. Built for 67-443 at CMU

Project Description

You Set The Vibe ๐Ÿ’ฅ

We Curate Tracks For Your Run ๐ŸŽง

You Crush Your Workout ๐Ÿ’ช

HyprRun makes running more enjoyable by playing music that changes with YOUR vibe! Like everything in life, we recognize that the pace or goals of your run are not constant. You may want to go faster during certain phases of your run, and slower during others. HyprRun attempts to recommend the track given your current 'vibe'. This means you no longer have to listen to calming classing music while you are attempting to hit a new 5K PR.

Project Setup

  1. Clone this repo

  2. Within XCode:

    File -> Packages -> Resolve Package Versions

    If you are still reeiving warnings or errors:

    File -> Packages -> Update to Latest Package Versions

  3. Send Spotify Credentials to anyone on our team. This is required for our app to be able to personalize tracks and recommendations.

  4. Build Application

Project Features

Interative development and extensive user research enabled us to implement the following features:

  • Authorization and Authentication via Spotify ๐Ÿ”
  • Select Specific Playlists From Your Library ๐ŸŽถ
    • Swipe or Tap to Select/Unselect
  • Pick the Vibe of Your Run (Chill, Light, Determined, HYPR) ๐Ÿ˜Ž
    • Interactive Picker
  • View Information Related to Your Music, Run, and Location All on One Page ๐Ÿคฉ
    • To view live map, swipe on album image
    • Real time run analytics
  • Play, Pause, or Skip Tracks As You Desire ๐ŸŽง
  • Adjust the Vibe Mid-Run and Receive Appropriate Recommendations ๐Ÿค–
    • Using CoreML model built from a sci-kit learn model in Python.
    • Trained on ~300 songs to understand what people deem to be a "hype" song
  • Pause or End Run ๐Ÿƒโ€โ™€๏ธ
  • View Summary Statistics for Your Run ๐Ÿ”ข
  • View All Past Runs on the Rewind Page โฎ
    • Additional information avaiable for each individual run

Notes for Instructors

  • Unit Testing
    • Due to the robust nature of the Spotify API, we decided to place our efforts elsewhere. Despite its steep learning curve, the Spotify API is really well tested and maintained. So, rather than dedicating valuable resources towards testing an established API, we worked on improving our machine learning classifier.
    • We felt this was a valuable tradeoff because our users emphasized the need for their music to match the "vibe" of their run. We did not simply want to merge a running app with a music app. We wanted to merge the two and create something special, and that required us to move quicky and focus on the more novel aspects of our solution. Examples include fusing data from the Spotify API and Core Location.
    • We are really proud of the vast music and location functionalities we were able to provide to our users in such a short time. If we had prioritized unit testing well-established API end points we beleive we would not have been able to deliver this experience.
  • Features
    • We tried to capture all the features we mentioned in last phase. However, upon further conversation with users, we prioritized certain features over others. We also prioritized the overall design of our application so that it did not feel "cheap" or "raw". The features

A-Level Use Cases

  • Users Can Connect to their Spotify Account
  • Users Can View The Current Playing Track
  • Users Can Pause/Resume Their Music
  • Users can choose from all of their playlists which playlist want to choose for each run
  • Users Can Start/Pause/End a Run
  • Users can view the duration (elapsed time of their run), their current average pace, and see the total distance they have ran
  • Users can view a run summary at the end of their run of the following attributes: Distance, Duration, and overall average pace
  • Users Can Adjust the โ€˜Vibeโ€™ of the Music as they Run (while the user runs, the user can listen to songs that match the vibe of their song)

B-Level Use Cases

  • Users can see their current running route as they run
  • Users can review end of run summary statistics for a specific past run
  • Users can view a list of their prior run history grouped by month
  • As part of their end of run summary, users can see how their music vibe levels change over time in relation to how their pace changes over time
    • After speaking to test users and performing a round of prioritization, we decided not to pursue this use case during this sprint because we considered it low priority. We do beleive the charts are valuable, however the test users were not interested in the direction we were taking it. So, rather than spending a lot of time on figuring out a new graphing mechanism within Swift, we put more time into improving our music recommendation algorithm and cleaning up our user interface.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.