What is this?

a Sails application to mimic "scrum-ban" taskboard. The application is built with Sails.js web framework.

Key features

  • Real-time updates on board via websockets
  • Easy usage
    • Basically just drag&drop tasks between phases
    • Story / Task edit via double click on the board
    • Easy understanding of the overall situation
      • Gravatar images of task authors and owners
      • Easy to see which tasks belongs to you (small indicator for this)
  • Authentication via passport.js, supported strategies
    • Local (username + password)
    • More is on the way...
  • Project-specific customizations
    • User access, using roles; manager, user and viewer
    • Phases; fully customizable
    • Sprints; time frame, stories
    • Exclude days and ignore of weekends in sprints
    • Milestones; deadline, stories
    • External links; add links easily to 3rd party software
      • Dynamic URL parameters
      • Can be used eg. to link GitHub issues to tasks / stories
  • Automatic statistics collection
    • Sprint burndown charts
    • Tasks durations in phases
    • More is on the way...
  • Localizations
    • Texts need more time for this...
    • Time and number formats, handled via moment.js and numeral.js
  • Common object specified functions, these are attached to all objects on Taskboard
    • Project, Sprint, Milestone, Story, Task, etc.
    • History of changes, what has changed and who made those
    • Comments, nested

Demo

Maybe sails are lifted on http://wunder.sytes.net:1337/ or maybe not...
You can use following credentials for demo:

username: demo
password: demodemodemo

Note that application allows one sign in at same time, so if you're kicked out from Taskboard the reason is probably that someone else is logged in using the same username.

Notes

Application is in under heavy development, so there might be some bugs and unfinished functionalities.

User roles

Taskboard users have different roles in projects which will determine what user can do within project. User roles are following:

  • Administrator
    • No limits to specified project, full access to all projects
    • Taskboard global settings
    • User management
  • Project manager (Primary)
    • Person who has created the project
    • Full access to created project
  • Project manager (Normal)
    • Like primary manager but limited rights
  • Project user (Normal)
    • story/task admin rights
  • Project user (Viewer)
    • Just view access to specified project
    • No rights to make any modifications at all

User permissions in Taskboard

Action Administrator Manager (Primary) Manager (Normal) User (Normal) User (Viewer)
Project
Add
Edit
Delete
View
Phases
Add
Edit
Delete
View
Milestones
Add
Edit
Delete
View
Sprints
Add
Edit
Delete
View
Stories
Add
Edit
Delete
View
Tasks
Add
Edit
Delete
View

Installation

I recommend installing Taskboard to linux environment. Below is short guide for installation process.

Basic requirements

Windows environment

If you have problems with npm install make sure that you have installed all required software. More info at:

https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Installation in linux

Below is basic installation guide for Taskboard application. Note that you gotta have root access to your linux box to make install process.

Install Git, MySQL, node.js, sails.js, npm and bower

CentOS / Fedora

sudo yum install git mysql mysql-server
sudo yum -y groupinstall "Development Tools"
wget http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x64.tar.gz
tar xvzf node-v0.10.24-linux-x64.tar.gz
sudo mv node-v0.10.24-linux-x64 /opt/.
cd /opt/.
sudo ln -s node-v0.10.24-linux-x64 node
sudo ln -s /opt/node/bin/npm /usr/local/bin/.
sudo ln -s /opt/node/bin/node /usr/local/bin/.
sudo npm install -g npm bower sails

Debian / Ubuntu

sudo apt-get install git mysql-server
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
sudo npm install -g npm bower sails

MySQL setup
Note: you must change following terms: YOUR_MYSQL_DB, YOUR_MYSQL_USER, YOUR_MYSQL_PASSWORD

sudo service mysql start
sudo /usr/bin/mysql_secure_installation
mysql -uroot -p -e "CREATE DATABASE YOUR_MYSQL_DB; GRANT ALL ON YOUR_MYSQL_DB.* TO YOUR_MYSQL_USER@'localhost' IDENTIFIED BY 'YOUR_MYSQL_PASSWORD';"

Clone Taskboard repository from GitHub, install it and create configuration
Note: Remember to change your main node application installation directory /var/node
Note: Change YOUR_USER_GROUP to desired user group in your Linux installation.
Note: npm install command will take a moment or a two to process.

sudo mkdir /var/node
sudo chgrp -R YOUR_USER_GROUP /var/node/
sudo chmod -R g+w /var/node/
cd /var/node
git clone https://github.com/tarlepp/Taskboard.git
cd Taskboard
npm install
vim config/local.js

Add following lines to your /var/node/config/local.js configuration file and make necessary modifications.
Note: Use same information that you used in MySQL setup section.
Note: You can override any config values in your /var/node/config/local.js file.
Note: Actual path of local.js file depends of your installation.

module.exports.adapters = {
    'default': 'mysql',
    mysql: {
        module: 'sails-mysql',
        host: 'YOUR_MYSQL_SERVER_HOSTNAME_OR_IP_ADDRESS',
        user: 'YOUR_MYSQL_USER',
        password: 'YOUR_MYSQL_PASSWORD',
        database: 'YOUR_MYSQL_DB'
    }
};

And then you're ready to lift the sails!
Note: Remember run this within your Taskboard installation directory.
Note: With CentOS / Fedora use command /opt/node/bin/sails lift

cd /var/node/Taskboard/
sails lift

Taskboard application will create admin user and demonstration project automatic if database is empty. Default admin user credentials are following:

username: admin
password: taskboardisawesome

Note: remember to change admin user password and other info.

Vagrant

Taskboard application has Vagrant configuration order to facilitate development of application itself. You can also use Vagrant for deploying application to production if you want to. Just clone or download Taskboard sources on to your computer and follow below instructions.
Note: First download and install Vagrant
Note: Command vagrant up will take a while to process at first time (couple of minutes)
Note: After sails lift command wait for a while so that Grunt has made all necessary jobs

cd Taskboard
vagrant up
vagrant ssh -c "cd Taskboard && sails lift"

After that you should apply to use Taskboard with your favorite browser on url http://localhost:1337

Update

When you need to update your installation of Taskboard just follow instructions below.
Note: Before update remember to lower sails. Note: Run commands in your Taskboard installation directory.

rm -rf .tmp/
git pull
npm install
sails lift

After that you should have updated version of application running.

Development / Contributing

First read article about forking, and then basically just;

  1. Fork it, please.
  2. Create a branch (git checkout -b xxx)
  3. Commit your changes (git commit -am "some changes...")
  4. Push to the branch (git push origin xxx)
  5. Open a Pull Request

Questions?

You can try to contact me at da_wunder@IRCnet

IDE recommendation

Really use Php/WebStorm from JetBrains, those are awesome IDEs!

3rd party libraries

Taskboard uses many 3rd party library to accomplish all necessary functionality of application. Below is list of used components.

Note that list may be out of date, please notify me if you found some missing packages.

Thanks

This application wouldn't be possible to do if I didn't get some help and support from others. So special thanks goes to people on list below.

  • My family (Tuula and Topi), thanks for support you're amazing
  • My co-workers @ Protacon Solutions, you guys are awesome!
  • People at #sailsjs IRC-channel @freenode
  • Petri Rosenström, thanks for installation scripts

Please note that there are many other who helped me with this application...

License

The MIT License (MIT)

Copyright (c) 2013 Tarmo Leppänen

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Screenshots of application

Project on GitHub