Teamwork.com
За компанията
Every day over 374,000 companies come to work and log on to Teamwork.com to find out what needs to be done in their business that day.
Teamwork.com is a productivity platform that is just a better way to run your business in every way.
We've expanded this great offering into a platform of three products;
Teamwork Projects - the easiest way to manage productivity and projects within your business.
Teamwork Desk - a customer help-desk and support ticketing system focused on happiness on both sides of the support equation.
Teamwork Chat (Beta) - still in beta, but used by thousands, our real-time messaging platform, designed to make team communication, fast, efficient and powerful.
Best of all - all three work seamlessly together, that's our vision for the future of Teamwork.com, beautiful software that's best in class, helps people get stuff done and integrates seamlessly.
Our Technology Stack
Knockout-2.0 CoffeeScript Gulp LESS Node.js MySql Redis Go
We’ve invested hundreds of hours of research, thought, debate and testing into choosing the right languages, frameworks and tools for Teamwork.com’s next five years. There are hundreds of articles debating which framework or library to use so I’m not going into the pros and cons too much here; instead I’m simply stating that, rightly or wrongly, at this moment, this is the stack that we have chosen and we think it rocks.
Client sideKnockout.js as our MV* framework
We’ve been using knockout.js for over a year now and we love it. We did investigate every other MV* Framework thanks to todomvc.com which enabled us to see good examples of each framework in action. We decided that most frameworks had way too much boilerplate and are slow to develop in. Knockout.js is a get-stuff-done framework, fast, powerful, easy to work with and to understand.
The one missing piece fell into place when Knockout 3.2 came out and added components. With this amazing feature, we feel using knockout.js is the best way to develop and maintain single-page applications. Kudos to Steve Sanderson for his great work.
CoffeeScript instead of JavaScript
When 5 of your developers keep telling you that we should be using CoffeeScript, you have to listen. I committed to trying it for a month. After 3 frustrating weeks I finally got used to it and by week 4 was in love. The guys are right, it saves a tonne of time and we are going to try to use it for all future work
Gulp.js, Slush, Less.js & Node.js
We are also using using Gulp, Slush, Less.js and Node.js. These tools allow us to compile our coffee script into JavaScript and create merged, minified css files for our website. We’ve also recently started using Less.js for generating our css files.
Server SideMySQL for storage
We’re sticking with what works here. MySQL is something we know and love and have become pretty handy with. It works great and we’re not jumping ship on this one anytime soon.
Redis for Caching
We used to use Memcached as our go-to in-memory caching layer. However we’ve been blown away by the feature set of Redis. It does so much more such as allowing us to maintain simple sorted lists in memory and to easily manage these lists. Perfect for storing items like task lists.
The Go language
This is the key decision for us because most of our work is done on the server side and is hard to change later. “Go” is a language developed at and used by Google. Some reasons we love Go include:
Fast Development - It doesn’t have as many features as other languages and it’s not perfect, instead it pragmatically focuses on helping us Get Stuff Done.
Cross platform - It can be run on Linux, Mac and PC.
No voodoo - There’s no voodoo going on under the hood. We can see and access the full code base so bizarre random problems like we used to have with the Java VM are a thing of the past.
Fast - It’s fast. Amazingly fast. Approaching speeds of C and likely to get faster in the future.
Smart - Performing background jobs is trivial.
Highly concurrent - It scales fantastically.
Low Memory - It uses very little memory (ColdFusion was a dog in this department) allowing us to use the on-server memory for other things like caching.
Robust - It’s robust in that it’s got built-in testing and enforces good programming style.
Great toolkit - It comes complete with code formatting and documentation generating tools.
Strong & clear docs - Documentation is a huge part of making software accessible and maintainable and the team behind Go provided us with excellent Go documentation and a tool called GoDoc that makes providing excellent documentation to others trivial.
It’s fun! - We’ve been using Go for a few internal projects now and we think it’s elegant, fun and exciting.