Welcome to the Bonsai source. Bonsai is a platform that allows music-heads to come together and share, discover and enjoy music together. We are an open sourced platform with distributed designs to increase stability and customization options.
####Rooms
- Bonsai will support multiple rooms
- Each room will have syncronized chat
- Users can talk in any number of rooms at once, even if they are not synced to that room. Synced means listening to the music of that room
- A staff list of infinite size can be set up by the room owner.
- A permission schema can be selected by the room owner
- Set and forget mode to play music to your listeners even when you're not online
- Themes for each room, selectable by each room
- Room owners can control the canvas for their room, similar to theme
- Suggestions
- Many options for each room, including google analytics code
####Users
- status of each user can be seen by everyone else.
- users can change their display names, but not their slug/username.
####DJs
####Solo-Play
- Users do not need to be in a community in order to listen to their playlists
- If a user hits pause when synced to a room, it will remove their sync status and move them to a solo-play session. They can continue chatting in an unsynced room.
- You can have your own collection and your own playlists, that can be listened to
####Synced-Play
####Bonsai Library
- The source of music will start with Youtube, more will come later
- On first play/add to playlist a link is stored in the Bonsai Library
- Users can tag genres to existing library items to allow for discovery of similar music
- Ability to search the Bonsai Library for music and have a "did you mean..." feature
- Can identify when a song starts and ends in a link, allowing only a portion of a link to be played
- Externally connects to other sites to create a library of albums
####Community
- You can send messages to other users to have private conversations
- Allow users to accept and send micro-transactions in cryptocurrencies to each other
- Advertise events and special information from major rooms to all other rooms on an admin approved basis
- Achievements... That mean nothing at all!
####API and Channels other than Web
- Distributed design that allows for any number of front ends connecting to a series of backends
- We may code retro for plug.dj bots to work on the API
- A front end can be set up anywhere and connect to a single backend API
- You can connect via IRC client or XMPP client to the Bonsai API to chat from your own chat client
And much more...
You can optionally use the vagrant configuration to set up a constructable development environment VM. To begin start by
downloading VirtualBox and Vagrants. Once you have these installed
if you're not on a POSIX host machine it's reccomended you get a POSIX environment to work from. On windows Cygwin
is a good POSIX terminal that will work. Make sure you install the openssl
package when installing.
Once you're all installed launch a terminal and navigate to the project folder. To begin execute the following command:
vagrant up && vagrant ssh
This will create your VM, configure it and then despoit you in an SSH session on the VM. Once you're done you can exit the ssh session and issue this command to stop the vm:
vagrant halt
If you'd like to remove the VM entirely you can destroy it:
vagrant destroy --force
This should give you a basic environment to work in that you can turn off when you're not using it.
Everything in your project directory should be visible at the /vagrant
path on the VM. Globally there's a number of
commands that are available to you.
provision command
The provision
command is a simple command that lets you re-run a provisioner. Mostly used for testing changes to the
provisioners but can also be used to re-install a component.
USAGE:
provision [<provisioner>]
If no provisioner is specified it will list the available provisioners.
bonsai command
The bonsai
command is a tool used to perform common client-level actions for developing with bonsai. Unfortunately the
provisioners can't do all the work for you, some actions should be run from the shell. This is where the bonsai
command
comes in. This will give you quick access to common operations so you don't have to remember / type common commands over
and over.
USAGE:
bonsai [<action>]
If no action is specified it will list the actions that are available.
- install - This should be the first thing you run, it'll make sure all the dependencies for the frontend and backend are installed.
- build - This will build both projects
- start - This will start the hosts for both projects
- stop - This will stop the hosts for both projects
- watch - This will build both projects and then watch for changes and run incremental builds when files change. (NOTE: Server project does not have it's watch tied into this)