/tablero

JS app to display issues of a Github repo as a Kanban board.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

TABLERO Build Status Code Climate

A kanban board for developers that connects with GitHub projects and synchronizes the issues of multiple repositories and the contributors that are working on them.

IMPORTANT: For the correct operation of the project, make sure your GitHub repositories have issues' use permission

Quick Installation

Open a terminal and execute this:

wget -qO- https://raw.githubusercontent.com/TWtablero/tablero/master/install.sh | sh

This script will check if your system satisfies the pre requisites, download tablero and its dependencies.

After the installation, you'll need to proceed with the Tablero configuration.

Quick Install in a VM

  1. Install ANSIBLE

If you want you can install a software for Mac called brew and run in your terminal:

$ brew install ansible
  1. Install VAGRANT and VirtualBox

Note: Don't forget to install the VirtualBox Extension Pack too which can be found in the website above!

  1. Go to configuration first step to generate the PX_CLIENT variables.

  2. From tablero directory in your terminal, use the variables from the last step to run:

$ PX_CLIENT_ID=<your px client id> PX_CLIENT_SECRET=<your px secret> vagrant up

Some tips

Turn on/Create the machine with: vagrant up

Shutdown: vagrant halt

Get in: vagrant ssh

Destroy the machine: vagrant destroy

Manual Installation

sudo npm install -g bower
  • Clone this repository in https
git clone https://github.com/TWtablero/tablero.git
  • Install the project dependences inside the project directory
npm install

After the installation, you'll need to proceed with the Tablero configuration.

Configuration

  1. Register Tablero as a new OAuth application with the following configuration:
Application Name: tablero
Homepage URL: http://localhost
Authorization callback URL: http://localhost:3000/request_auth_token
  1. Create a config.json file with application's values generated in the last step: ![image of applications variable] (http://www.sumoware.com/images/temp/xzqgemqimmkkdcrr.png )

You can just rename the example.config.json and change the values:

{
  "PX_OAUTH_URL" : "https://github.com/login/oauth",
  "REPOS" : "",
  "PX_CLIENT_SECRET" : "your_client_secret",
  "PX_CLIENT_ID" : "your_client_id",
  "REDISCLOUD_URL" : ""
}

Remember to put the repositories you want to display on the REPOS key. It is a semi-colon (;) separated list specifying each repository. I.e:

"REPOS" : "https://api.github.com/repos/OWNER/REPO_NAME;https://api.github.com/repos/OWNER/REPO2_NAME"

Optionally, you can just set the owner and repository name in Owner/Name format. I.e:

"REPOS" : "owner/repo_name;owner/repo2_name"

Starting the Application

npm start

Then access the project through the browser

http://localhost:3000

Static File Server

A local installation of Gulp provides a Node-based foundation for running development and build tasks.

The watch task serves the contents of the 'app' directory on http://localhost:8080/, and watches files for changes. Install Chrome's LiveReload extension to have the browser tab automatically refresh when files are changed.

npm run watch

Alternatively, the server (which is a local installation of node-static) and can be run on its own:

npm run server

Additional tasks can be included in the gulpfile.js. For further information about using Gulp, please refer to the Gulp website.

Optional Features

Saving the order of issues

If you want to prioritize your issues and persist them for future sessions, then you will also need to have Redis installed.

If you want to use it locally, just start the server from your terminal:

redis-server

If you would like to use a remote Redis, define the REDISCLOUD_URL variable on the config.json file. I.e:

{
  "PX_OAUTH_URL" : "https://github.com/login/oauth",
  "REPOS" : "",
  "PX_CLIENT_SECRET" : "",
  "PX_CLIENT_ID" : "",

  "REDISCLOUD_URL" : "your_redis_url"
}

Unit Tests

A local installation of Karma is used to run the JavaScript unit tests. Karma makes it easy to watch files and run unit tests in real browsers:

npm run watch-test

This is the recommended approach because the moment your unit tests start failing, you'll be notified in the terminal.

To run the unit tests just once in PhantomJS (for CI), you must install PhantomJS and then run:

npm test

For further information about configuring Karma, please refer to the Karma website.

Functional Tests

Functional tests are written in Java using Selenium (Firefox web driver by default).

Note: To avoid making changes to your repository, you need to pass two test repositories as an environment variable REPOS when running the functional tests.

Before executing the test you need to have the application running and TABLERO_TEST_USER and TABLERO_TEST_PASS environment variables set (Test user GitHub credentials).

After that, you can execute them all running:

REPOS="TWtablero/repoTest1;TWtablero/repoTest2" npm run functional-test

or specifying environment variables on the fly:

REPOS="TWtablero/repoTest1;TWtablero/repoTest2" TABLERO_TEST_USER=user TABLERO_TEST_PASS=pass npm run functional-test

or, if you want to run specific tests, you will need to directly invoke maven (from root directory):

mvn -f test/spec/functionalTest/rocketboard/pom.xml -Dtest=rocketboard.TEST_CLASS_NAME test

or, you can run them from as JUnit tests from any IDE.

It is worth noting, that in this case you will need to specify the environment variables for its run configuration.

Note: To make the environment variables persistent you can add them to ~/.bash_profile or ~/.profile on OS X. E.g:

export REPOS="TWtablero/repoTest1;TWtablero/repoTest2"

Contributing to this project

Anyone and everyone is welcome to contribute. Please take a moment to review the guidelines for contributing.