0.4 Ferret

By IainJMcCallum, September 1, 2016

It’s here! This is a pretty big milestone to reach. In summary: the front end is in a good place, the server is running, the database is running, we have Travis set up with continuous integration & automatic deployment to Heroku. Phew! Now as the first development update post we’ve done I feel that it is mandatory to give a quick run down of where we’ve been:

0.1 This is something best forgotten.

0.2 The first nearly working ‘draft’. Built in Angular the Angular way, but like any first draft, naive.

0.3 A rewrite, still with Angular but incorporating some of the ideas behind Facebook’s “flux” architecture. Unsurprisingly, Redux was a big influence too. But it still didn’t quite feel right. We had 2 issues. 1: we had to still do angular things because it’s angular. And 2: angular2 started raising it’s head. So on May 29th 2016, version 0.3 was called and the transition away from a big JS framework began.

0.4 Ferret Replacing Angular with a more concise home-grown architecture was the primary goal for this milestone. That and an overhaul of the markup, styles, directory organization, build process, and even language-ish (we’re now transpiling ES6). So a twisted acronymish like name was contorted into existence: “Ferret”, shoehorned out of “Front End: ResRructuring EveryThing”. I’m not going to lie, I’m quite proud of that.

Future things to look forward to.

The current database is MongoDB. Great for roughing out, not so great for the direction we’re going. It would seem we have need of a graph db, so research and replacement will likely be on the books in the coming months.

The node ‘view’. The first step has been taken – there’s an SVG ready for the view! I’m currently looking at Snap.svg to run this part although D3 may turn out to be the way to go. At least the JS that deals with managing the client side state is in a much better place to handle the intense work that will be happening here.

Express.js, our back end. Other than building out the API a little, this area hasn’t really been touched in a while. I am certain we are leaving some huge performance and hardiness gains on the table here. With the DB overhaul, there will have to come work on the server, so why not go all out!