Source code behind the website - a community-driven site focused on bringing together the people sharing the knowledge with the ones giving feedback.
PHP CSS JavaScript Other
Switch branches/tags
Nothing to show
Pull request Compare This branch is 136 commits behind joindin:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
joindin-api @ 8d23821
build.xml (

This is the source code for the 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.

This README includes instructions for setting up You can either install on an existing PHP platform, or use our vagrant setup. Note: contributors should start at the Contributor readme (

Quick Start - Existing Platforms

  1. Create a vhost entry for the site. The docroot should be /src.

  2. 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)

  3. Create a MySQL database with username and password. Use a database name of 'joindin'

  4. 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!

  5. 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";
  6. Initialise, patch, and populate the database. The database files are no longer part of this repository; they live in the API repo which you will also need to fork and clone. Within that codebase, you can run the following command to populate your database, using the credentials you created in the previous step.

     scripts/ -t /path/to/joindin-api -d joindin -u username -p password -i

    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 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.

  7. Create some sample data to get you started, this tool is also under the API repo. Look at tools/dbgen/ for information about this excellent tool

  8. To enable useful error messages, add the following to your .htaccess

     SetEnv JOINDIN_DEBUG on
  9. Enjoy the site!

Quick Start - Using Vagrant

The virtual machine has been moved to a different repo. To use it fork the joindin-vm repository and follow the instructions in there.

This VM will load all three projects (, joindin-vm and joindin-web2).

Other Resources

See LICENSE file for license information for this software (located in /doc/LICENSE)


Unit Tests

There are some tests set up, which use PHPUnit; these can be found in the src/tests directory and the src/api-v2/tests directory. There is a phing task configured to run them - from the root directory simply run "phing phpunit" to run the tests. Unfortunately, there will be no output about whether the tests passed or failed from the phing target. A better way to test when you are developing is to run the tests from within the respective tests directory by just typing phpunit. The phpunit.xml in each directory will configure the bootstrap as well as any files that should not be included.

The phpunit.xml file in the src/tests directory will run all of the PHPUnit tests. The phpunit.xml file in src/api-v2/tests will run only the API v2 unit tests.


Please do your best to ensure that any code you contributed adheres to the coding style. This is roughly equivalent to the PEAR coding standard with a couple of rules added or taken out. You can run php codesniffer using phing on an individual file like so:

phing phpcs-human -Dfilename.php

This will run codesniffer on any file within the regular source for or the API-v2 source. Wildcards work as does specifying part of the path in case the filename alone results in sniffing more files than you wanted.

To see a summary of the codesniff errors and warnings across the entire project, run

phing phpcs-human-summary

This will show the files that still need some attention.