This is the source code for the Joind.in website - a resource set up to allow events to get real-time feedback from those attending. It also gives speakers a way to claim and track their presentations over time.
You can either install joind.in on an existing PHP platform, or use our vagrant setup.
Quick Start - Using Vagrant
You can set up a development virtual machine running joind.in by following these simple instructions.
Install requirements. (Note: these are not required by joind.in itself, but are required for this quick start guide.)
Clone repository to any location and fetch required submodules (containing Puppet manifests).
git clone https://github.com/joindin/joind.in --recursive cd joind.in
git clone https://github.com/joindin/joind.in && cd joind.in git submodule init git submodule update
Start the process by running Vagrant.
Add hostname to /etc/hosts.
echo "127.0.0.1 dev.joind.in api.dev.joind.in" | sudo tee -a /etc/hosts
Browse to the newly provisioned development copy of joind.in.
- HTTP and SSH ports on the VM are forwarded to localhost (22 -> 2222, 80 -> 8080)
- The joind.in directory you cloned will be mounted inside the VM at
- You can develop by editing the files you cloned in the IDE of you choice.
The database is running inside the VM. You can get to it by doing the following:
you@you> vagrant ssh vagrant@vm> sudo su root@vm> mysql joindin
To stop the VM do one of the following:
vagrant suspendif you plan on running it later
vagrant destroyif you wish to delete the VM completely
Also, when any of of the Puppet manifests change, it is a good idea to rerun them:
Quick Start - Existing Platforms
Create a vhost entry for the site. The docroot should be
Create directories for user-added content.
mkdir src/system/cache/ctokens && chown apache:apache src/system/cache/ctokens
(or whatever user and group your web server runs as)
Create a MySQL database with username and password. Use a database name of 'joindin'
Create configuration files for database and config (based on the .dist templates):
cp src/system/application/config/database.php.dist src/system/application/config/database.php cp src/system/application/config/config.php.dist src/system/application/config/config.php
Edit these files as appropriate!
If you are using Fast-CGI you will need to edit the .htaccess file Change lines 17 & 24 from:
RewriteRule ^(.*)$ /index.php/$1
RewriteRule ^(.*)$ /index.php?/$1
Also you will need to amend the config.php so that the uri_protocol setting ends up as follows:
$config['uri_protocol'] = "QUERY_STRING";
Initialise, patch, and populate the database.
src/scripts/patchdb.sh -t /path/to/joind.in -d joindin -u username -p password -i
(use the correct username and password)
If you are using Windows And/Or Git bash you may see an error regarding "o being an invalid option" when running step 6.
To fix this, you will need to visit http://gnuwin32.sourceforge.net/packages/grep.htm and download the binaries and dependencies zip files Extract the contents of the bin folder from the zip files to the bin folder of your Git install and restart Git Bash.
This should also work for git via the commandline (cmd.exe) but cannot be guaranteed in that environment.
Create some sample data to get you started - see
/doc/dbgen/READMEfor information about this excellent tool
To enable useful error messages, add the following to your
SetEnv JOINDIN_DEBUG On
Enjoy the site!
- The main website http://joind.in
- Issues list: http://joindin.jira.com/ (good bug reports ALWAYS welcome!)
- CI Environment: lots of output and information about tests, deploys etc: http://jenkins.joind.in
- Community: We hang out on IRC, pop in with questions or comments! #joind.in on Freenode
See LICENSE file for license information for this software (located in /doc/LICENSE)
To run the frisby tests (frisby.js), you will first need to install node.js and npm. Then run:
npm install -g frisby jasmine-node
I also found that I needed:
You should set the URL that the tests run against to be your local installation:
Then run the tests by going to
/src/tests/api_tests and running:
There are some tests set up, which use PHPUnit; these can be found in the src/tests directory. There is a phing task configured to run them - from the root directory simply run "phing phpunit" to run the tests.