Teamspark

A simple bug/idea/feature tracking system for better team collaboration

View project onGitHub

Teamspark Teamspark

Teamspark Introduction

What is Teamspark?

Teamspark is a clean and simple project/task management tool. It enables everyone within the team to capture inspiration, manage tasks, track the progress and communicate freely.

Why Teamspark?

I've been looking for a right team collaboration system. Email is an inefficient communication tool for us, especially when there are lots of files shared back and forth. IM is good to some extend, but it is hard to trace back. Before building teamspark, we use Redmine a lot for project management and bug tracking. But it is a little bit complicate. We tried to force the entire team to use Redmine for communication and collaboration but it turned out that non techies dislike it.

Other than Redmine, I've used several other projects for collaboration:

  1. bugzilla/trac. Too geek, not the right choice for non engineers.
  2. wikimedia. Not a right choice.
  3. confulence: My favorite wiki system but neither open source nor free.
  4. jive: Too complicated and not free.
  5. asana: A great, modern collaboration tool. But too slow to access in China. :(
  6. teambition: A collaboration tool, seems great on sharing information but not collaborating on tasks.

As there seems no free and good tools, I decided to build my own.

What on earth team spark can help?

Teamspark could help to:

  1. Record every piece of information related with your project. Teamspark allow people to discuss and share ideas within the team freely. Including but not limited to: Ideas, Bugs, Tasks, Features, Improvements.
  2. Make everyone in the team could know everything about the projects within the team.
  3. Enable realtime collaboration.

What is the current status of teamspark?

Teamspark is still a very young project. But it is usable now. In tukequan, we've been using is for over 2 months and more than 1000 sparks were created and processed. So if your team is as small as us (less than 20 people), please have a try.

Why don't your provide a online service?

Teamspark is far from a complete product to be an online service. It lacks of many security considerations. So deploying teamspark inside your company, without public facing IP, and protected by your company's firewall, is the right choice at the moment.

However, we do provide an online demo for teamspark for you to test: http://ts-demo.tchen.me. You can login with demo/teamspark to have a first glance. If you want to create your own profile, you need to open http://ts-demo.tchen.me with another browser and login with admin/teamspark, then click "+" button right on the title to add your newly created user into the team.

Authors and Contributors

Teamspark is designed and implemented by @tyrchen. For more information about the author, please visit: http://tchen.me/pages/aboutme.html

The logo of Teamspark is contributed by @0065paula of Pyology.

Support or Contact

Having trouble with Teamspark? Please submit issues in https://github.com/tyrchen/teamspark/issues.

License

Teamspark is licensed under the MIT License.

Installation

MongoDB

Mongodb shall be installed as a database service for Teamspark. To install it:

Ubuntu:

$ sudo apt-get install mongodb

OSX with homebrew:

$ brew install mongodb

For windows and other platforms, please refer to the related documents.

Meteor

Teamspark uses meteor framework. To install meteor:

$ curl https://install.meteor.com | /bin/sh

Meanwhile, you can clone/fork the code to your local folder. When meteor/mongodb installation finished, you can run it by:

$ cd teamspark
$ meteor

Note: for chinese user, please checkout to chinese branch so that you could have a familiar user interface.

Then teamspark service will be started at port 3000. You can visit http://localhost:3000 to see the demo.

Configuration

If you intend to use it in your own projects, make sure you configure the proper keys. Open teamspark/common/configuration.coffee, replace the weibo app key/secret and filepicker.io api key with your own ones.

Deploy Teamspark with Nginx and Supervisor

Assume you have teamspark installed correctly and you can access http://localhost:3000 when you bootup teamspark with meteor command. Then you may want to deploy teamspark in a production environment. Here are the instructions (for debian/ubuntu):

Meteor Bundle

According to meteor document, you should use meteor bundle to create the tarball for deployment.

Under your teamspark source code directory, do:

$ meteor bundle ~/deployment/teamspark.tgz

This will create a bundled teamspark tarball. You can scp it to your server (assume your put it in ~/deployment directory). Then you should do:

$ cd ~/deployment
$ rm -rf teamspark.bak
$ mv teamspark teamspark.bak
$ tar zxvf teamspark.tgz
$ mv bundle teamspark
$ cd teamspark/server/node_modules
$ rm -r fibers
$ npm install fibers@0.6.9

Now teamspark is ready for use. The next step is to run teamspark under supervisord.

Install and configure supervisord

$ sudo apt-get install supervisord

In your supervisor configuration (normally it's in /etc/supervisor/supervisor.conf), add the following in the end of the file:

[program:teamspark]
directory=/home/ubuntu/deployment/teamspark
user=ubuntu
command=node main.js
environment=PORT=7005,ROOT_URL="http://teamspark.yourdomain.com",MONGO_URL="mongodb://localhost:27017/teamspark"
redirect_stderr=true
stderr_logfile=none
stdout_logfile=/var/log/supervisor/teamspark.log
autostart=true
autorestart=true

Remember to replace ubuntu to the username in your server. You should also change teamspark.yourdomain.com to a real domain name.

After this you could run sudo supervisorctl to manage supervisor. In the supervisor prompt, input reread to reload the configuration, then update to take effects. Your teamspark service should be running if you input status. If not, go to /var/log/supervisor/teamspark.log to see the error information.

Run in nginx

Create a new file in /etc/nginx/site-available/teamspark. Put the following configuration in it:

server {
  listen 80;
  server_name teamspark.yourdomain.com;
  access_log /var/log/nginx/teamspark.access.log;
  error_log /var/log/nginx/teamspark.error.log;
  location / {
    proxy_pass http://localhost:7005;
    include /etc/nginx/proxy_params;
  }
}

Then make a soft link in site-enabled and restart nginx:

$ cd ../site-enabled
$ ln -s ../site-available/teamspark teamspark
$ sudo /etc/init.d/nginx restart

You may also need to add the domain name teamspark in your DNS configuration.

After all these done, you should be able to see teamspark up and running with: http://teamspark.yourdomain.com.

Enjoy it.