Trello

Trello

8240 Followers
Trello is a collaboration tool that organizes your projects into boards. In one glance, Trello tells you what's being worked ... more
@trello
trello.com
new york, ny
Tools by Trello
This is a community-generated profile. To edit this page claim this profile

Decisions 7

benroeder

When the data request returns, Backbone.js gets busy. The idea with Backbone is that we render each Model that comes down from the server with a View, and then Backbone provides an easy way to:

1) Watch for DOM events within the HTML generated by the View and tie those to methods on the corresponding Model, which re-syncs with the server

2) Watch the model for changes, and re-render the model’s HTML block to reflect them

Neat! Using that general approach, we get a fairly regular, comprehensible, and maintainable client. We custom-built a client-side Model cache to handle updates and simplify client-side Model reuse. Backbone.js

2 72.9K

benroeder

Where we have browser support (recent Chrome, Firefox, and Safari), we make a WebSocket connection so that the server can push changes made by other people down to browsers listening on the appropriate channels. We use a modified version* of the Socket.io client and server libraries that allows us to keep many thousands of open WebSockets on each of our servers at very little cost in terms of CPU or memory usage. So when anything happens to a board you’re watching, that action is published to our server processes and propagated to your watching browser with very minimal latency, usually well under a second. Socket.IO

2 43.2K

benroeder

We use Mustache, a logic-less templating language, to represent our models as HTML. While ‘harnessing the full power of [INSERT YOUR FAVORITE LANGUAGE HERE] in your templates’ sounds like a good idea, it seems that in practice it requires a lot of developer discipline to maintain comprehensible code. We’ve been very happy with the ‘less is more’ approach of Mustache, which allows us to re-use template code without encouraging us to mingle it with our client logic and make a mess of things. Mustache

2 21.6K

benroeder

The server side of Trello is built in Node.js. We knew we wanted instant propagation of updates, which meant that we needed to be able to hold a lot of open connections, so an event-driven, non-blocking server seemed like a good choice. Node also turned out to be an amazing prototyping tool for a single-page app. The prototype version of the Trello server was really just a library of functions that operated on arrays of Models in the memory of a single Node.js process, and the client simply invoked those functions through a very thin wrapper over a WebSocket. This was a very fast way for us to get started trying things out with Trello and making sure that the design was headed in the right direction. We used the prototype version to manage the development of Trello and other internal projects at Fog Creek. Node.js

2 13.9K

Followers 8240

chris0200
Camilla Nascimento Santos
Fernando N.P.F
Elsa O'Neil
Dustin Braun
Jerome Gamo
Marcin Klima
jack lennon
Himanshu Batra
Burak Özkırdeniz
Marc Gavanier
tanyeah
Jeremy Fabatz
Jefferson Rosa
xin-guo
Sandra Gonzalez
Bernard Chow
ScottFernandez Properties
toshiki tanaka
Alain Maurice
Abd EL-Rahman Said
Sharanie Segaran
Geoffrey Hancock
Georgi Georgiev
Allan Bodgers
Fadhel Fatani
Richard Yang