Skip to content

On Boarding

James Kuczmarski edited this page Oct 20, 2017 · 6 revisions

What is Moose?

Moose is a web application that allows you to stream music with others effortlessly. You can create a room for others to join or join an existing room via that room's join code.

Prerequisites

Important

Before running, please ensure that Node.JS (we have been developing with v8.5.0) and MYSQL (v5.7.10) are installed on your machine. You will need to have a MYSQL root user with the username 'root' and with a password 'password'. Our development and testing were performed primarily on macOS Sierra, but the following instructions should work for any *nix system.

You will also need a YouTube search API key to make requests. You can register for an API key here. Once on the Google APIs page, click the "Create Credentials" button and select "API key".

Once you have a cloned version of the repo come back to this step

Edit the following line in server/example.keys.js:

    const my_key = 'YOUR API KEY';

so that it contains the API key you just created. Then rename this file from example.keys.js to keys.js

Installation and Running

  1. Download a zip of the repo from GitHub or clone the repo

     git clone https://github.com/jbkuczma/moose.git
    
  2. Move into the project directory

     cd moose
    
  3. Install dependencies for Moose

     npm install
    
  4. Run the shell script to setup the testing database

     sh create_clean_db.sh [root_username] moose
    
     * You will need to provide a root database user and its password when prompted for the script to work
     * 1 user will be created
             * User: test.1
             * Password: test.1
     * 1 room will be created
             * Room name: SaturdaysAreForTheBoys
             * Room Code: 4444  
    
  5. Start Moose

     npm start
    

You should see the following prompt:

    Moose started on port 3000
    Visit localhost:3000/login or [Your IP Address]:3000/login

The following routes can be visited after following the above steps:

     localhost:3000/login
     localhost:3000/rooms
     localhost:3000/room/[A Room Code]

Working on an Issue

Once you have a 'help wanted' issue you would like to work on, create a branch off of develop and begin working on that issue. Please make meaningful commit messages describing what the code you are committing does. When you believe you have completed your issue, you will need to create a pull request. The base branch for your pull request will be develop. Add @jbkuczma, @Rmiller1673, @deankostorowski as reviewers, add yourself as the assignee, and under milestone add the collaboration milestone.

Creating an Issue

If you have found an issue, you can report it here. There are numerous labels to describe what the issue is about, please use them. Also add your issue to the collaboration milestone.

MYSQL Error

If you receive the follow MYSQL error

Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: YES)

the default username and password we use is not the same as what is in your mysql.user table. You can do one of two things:

  1. Create a user 'root'

     In a mysql shell
    
     > CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
     > GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';
     > FLUSH PRIVILEGES;
    

    The asterisks in the command above refer to the database and table (respectively) that they can access. This specific command allows to the user to read, edit, execute and perform all tasks across all the databases and tables.

  2. Change the database username and password that is used throughout Moose. Change the info used for connecting to the database in server/server.js and server/auth.js

     let connection = mysql.createConnection({
         host     : 'localhost',                       // db host
         user     : 'USERNAME_YOU_WANT_TO_USE',        // db user
         password : 'PASSWORD_FOR_USERNAME',           // password for user
         database : 'moose'                            // which database to use
     });
    

Clone this wiki locally