A modern, open-source, collaborative music app

Jonathan f3c4c4ae52 Added sass partials folder for more modular styles 7 years ago
config 2606273e1a Initial commit of new code base 7 years ago
public 0c79e9c464 Worked on sockethandler a bit and added some socket support in main.js. 7 years ago
src f3c4c4ae52 Added sass partials folder for more modular styles 7 years ago
.gitignore 2606273e1a Initial commit of new code base 7 years ago
LICENSE 9d5846ddff Initial commit 8 years ago
README.md d7ef4a3617 Small update. 7 years ago
Vagrantfile 2606273e1a Initial commit of new code base 7 years ago
bootstrap.sh 9ac59ff230 Added gulp-cli to the bootstrap file, run 'vagrant up --provision' to apply these changes 7 years ago
gulpfile.js ab15aff17d Fixed whitespace 7 years ago
package.json c5d179788c Added some more auth implementation [Having rethinkdb errors] 7 years ago
schema.json 64865de4b8 Updated schema.json. Merged station and added user schema. 7 years ago

README.md

MusareNode

Musare in NodeJS, Express, SocketIO and VueJS.

Requirements

Important Notes

The latest version of Vagrant (1.8.5) has some issues with inserting ssh keys into the machine. It's a show stopping bug that they aren't going to fix until the next release. So for now, I recommend using Vagrant 1.8.4. You'll also need to use a slightly older version of Virtualbox because of this.

Getting Started

Once you've installed the required tools:

  1. git clone https://github.com/MusareNode/MusareNode.git
  2. cd MusareNode
  3. cp config/template.json config/default.json

The secret key can be whatever. It's used by express's session module. The apis.youtube.key value can be obtained by setting up a YouTube API Key.

  1. vagrant up
  2. vagrant reload

This will ensure that the services we've created start up correctly.

Once this is done you should be able to access Musare in your local browser at 172.16.1.2. To access the RethinkDB admin panel, go to 172.16.1.2:8080 in your local web browser.

You can also now access your machine using:

vagrant ssh

Or if you have mosh installed (and have ran vagrant plugin install vagrant-mosh), you can run:

vagrant mosh

You can run vagrant to view more options.

Logs

You can view logs at the following locations:

  • Musare: /var/log/upstart/musare.log
  • RethinkDB: /var/log/upstart/rethinkdb.log

Development

Ideally we'd have the app running using nodemon. But for whatever reason, it doesn't restart when server code is changed on Ubuntu 14.04. If you find a solution for this let us know! Or make a pull request :)

Because of this, you'll need to manually restart the nodejs app. You can do this by calling sudo service musare restart on the machine (make sure to ssh into the machine before calling this by running vagrant ssh).

You'll probably want to have two terminal windows open, one that you can restart Musare with. And another that you can run sudo tail -F /var/log/upstart/musare.log in. This will output everything that running node app.js would typically output.

FAQ

What does vagrant up do?

This will pull down the Ubuntu 14.04 vagrant box and setup a virtualbox machine for you. It'll ask you what network interface you want the virtualbox machine to connect to the internet with. On macOS I typically choose en0: Wi-Fi (AirPort), but it'll be different on different platforms. It will then run the commands in the bootstrap.sh file on this virtual machine. This will install nodejs, rethinkdb, and a bunch of other goodies. This same file could be ran on a production Ubuntu 14.04 server with very little modifications (if any at all).

What does vagrant ssh and vagrant mosh do?

Vagrant automagically generates and inserts a openssh keypair for you. This doesn't really have any security (as it doesn't really need to be since it's only for development). This allows you to access your machine in a very convenient way. The second command, vagrant mosh, is actually just a vagrant plugin. Mosh is a replacement for SSH, and if you haven't checked it out before, you really should! :)

Why use Vagrant? I can run NodeJS and RethinkDB locally

The reason for using vagrant is simple. It gives every developer the same local development server. This removes any inconsistencies across different dev enviroments (Windows vs macOS vs Linux). It also ensures that your changes are running on an enviroment that exactly matches the production server.