Git Product home page Git Product logo

solarizd's Introduction

Solarizd - Music Player App

Solarizd is a music player which enables you to create playlists and get recommendations for more music you might like. Solarizd uses freely available streaming APIs such as YouTube and SoundCloud to deliver music-on-demand, and harnesses the power of APIs like The Echo Nest and last.fm for recommendations.

A live demo can be viewed here: http://app.solarizd.com/

This README describes the steps required for setting up a development environment. You are required to supply a json file containing API keys for the relevant services used by this app, make sure to read API Keys section.

Setup

The setup of Solarizd is pretty simple. First, you need to clone this repository (or clone your own fork of the repository):

$ git clone https://github.com/Tudmotu/solarizd.git

Now that you have the code base, cd into the directory. We will now want to install all of the dependencies for this project. First, you need to make sure you already have node, npm, grunt and bower. Depending on the operating system that you are using, installation of node and npm may vary. After installing these two, grunt and bower can be installed in the following manner:

$ npm install -g grunt-cli
$ npm install -g bower

After veryfing your system satisfies the above requirements, the project's dependencies can be installed in two simple steps:

$ npm install
$ bower install

After running these commands, you will be able to compile the source and run a static server that will serve Solarizd on localhost:9000.

Compiling ES6 Source

Solarizd is written with es6 syntax. This requires running Babel + Browserify before changes can take effect in the browser.

For fast development cycles, you can run a watchify command that will watch and automatically re-bundle you source. This command is ran using npm scripts:

$ npm run watchify

Running this command will spawn a Watchify instance that will automatically recompile your es6 code into browser-supported code. After running the command, you should start seeing an output similar to the following:

> [email protected] watchify /path/to/solarizd-app
> watchify src/app.js -d -o src/app.browser.js -v

4065363 bytes written to src/app.browser.js (9.94 seconds)
4065340 bytes written to src/app.browser.js (1.45 seconds)
4065363 bytes written to src/app.browser.js (1.34 seconds)

Karma Tests

Some features are covered by tests that are run using Karma (Jasmine as testing framework).

These tests can be run in two ways:

  • Run the tests once:

    $ grunt karma:test
    
  • Run a karma watch task, that will automatically run the tests whenever you make changes to code (works really well with TDD):

    $ grunt karma:dev
    

Running a Development Server

We can run two instances of a development static server using grunt-contrib-connect. In order to run static server that is pointed at src/, execute:

$ grunt connect:src

In order to run a static server pointed at target/:

$ grunt connect:target

The connect server will listen to localhost:9000.

Build Process

There's a grunt-task that will concatenate and minify the JS and CSS files, and dump the result in target/:

$ grunt build

This will generate the minified app under the target/ directory.

API Keys

For the app to function, you need to supply it with API keys for the different services it uses. Currently, Solarizd uses two APIs: YouTube, and The Echo Nest. In the future it might and probably will support others. When it first loads, the app will look for a file called apikeys.json, in the same directory as index.html. This file should contain a map of services and their appropriate API keys. It should look something like this:

{
    "youtube"     : "AIza......kq0A",
    "echonest"    : "TI..........UO",
}

You should add this file to both the src/ and the target/ directories.

Credits

Developed by Yotam Bar-On (Tudmotu), 2014-2015.

License

This project is released under the MIT license (see LICENSE.rst).

solarizd's People

Contributors

amirwollman avatar benmeirz avatar royb998 avatar tudmotu avatar

Watchers

 avatar

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.