Our current stack

We started with a clean plate. Only had an idea about the product, but no designs or specifications. No front-end codebase or UI engineering team. We shaped the product along the way, and learned a lot.

As a first step, we had to pick our front-end stack.

CoffeeScript

With years of JavaScript experience we understood the strengths and weaknesses of the language. Feeling adventurous, we decided to dive into CoffeeScript instead. The main reason was to help the team write better code by enforcing the right patterns. It also gives us the confidence that the compiled code is syntactically correct. We understood this is a controversial topic, and I’m not saying this is the only, or the right way to build a product. But after 25k lines we are happy with this decision.

Knockout.js

Building a lean startup means not knowing how the product will look in 6 months, especially in the early days. To get started, we built separate pages for the different parts of the product. Later these pages evolved into complex views, handling lots of data and user interactions. To support this multi-page structure, we chose Knockout.js, which is strong at the UI data bindings. Looking back, it made sense to support the lightwave pages and ensure the application UI is always in sync with the data.

Libraries / Tools

We experimented with a lot of open-source libraries to solve smaller problems. Here is a few that proved to be mature enough for production.

- We built our dropdowns and typeaheads on Select2 and Typeahead.js

- We use SignalR to send down real-time messages to the client side

- Our drag and drop and file upload features are built on HTML5 DND and File APIs.

- Bundler compiles, bundles and minifies our CoffeeScript and LESS files

- Grunt.js runs our unit tests with mocha.js

Over time we learned a lot about these technologies, and how to build a complex web app, — which we are planning to share in the future.

But the front-end industry is moving fast, and there is always room for improvement. Here are a few problems we see coming our way this year.