Alexander Beletsky's development blog

My profession is engineering

Likeastore, Application Built on Hackathone

It’s my second time I attended hackatone. As last time, it took place in Ciklum, the best office in Kiev, so I had very strong wish to visit it. My previous experience showed several things: hacktone is absolutely unpredicable thing, you can’t guess which projects will be popular or not.. and the second, that it’s hard to do something valuable alone.

So, this time I decided to build a team of guys I know and trust, so we can do something together. Those two guys appeared to be my colleagues, in @debitoor project @voronianski and @mamant. We gathered together, to build a product which was called - “Likeastore”

Idea behind

All of us having at least those 3 accounts: facebook, twitter and github. And all of those are continuous stream of information. If you have an interesting network, it probably produces interesting content so you do much of likes/favorites/stars (stories, tweets, or interesting gihub repos). The problem, it’s very difficult to keep this information ordered - you typically remember you heard something interesting, but could not remember the source of it.

“Likeastore” is aimed to fix this problem. Integrating wish different services it’s keeping your “likes” information in good order, with nice search and smart categorizing.

likeastore login screen

What we did?

We basically allow “Likeastore” to connect all those application by their open API and collect the information from it. We transform the information into something generic and grouping it together. So, the users are having all information up-to-date in nice and clear dashboard.

Originally we had ambition to have a kinda real-time. In the way, I favorited the tweet and “Likeastore” almost immediately got the information. We had to drop it. The reason is API’s of popular applications are very quoted. You simply cannot do more request that in quota, otherwise you just banned.

So, nethertheless of similar projects, we don’t want to make next social network of bookmarks. Instead, we want to build easy to use and powerful information keeper. Something, that help you to have things in order.

likeastore setup screen

How we did it?

In fact, we’ve build a “thrown-out” prototype. The code is a shitty inside, so we bit far of nearest production. But, we’ve created an interesting application. We split on 2 + 1, two backend (me and @voronianski) and one front-end guy (@mamant). Sat closely and worked shoulder-to-shoulder for next 22 hours.

From the very beginning I had very clear vision of stuff we need to do. I could imagine architecture and UI principles. And as soon I shared that the teammates accepted that really fine and provided high quality feedback and collaboration. That helped us to have a strong team in my perspective.

All of us are JS developers, so no doubt we’ve taken a JavaScript stack as default. Node.js, powered by Express.js at the backend and Backbone.js front end. Sometimes it’s tricky, but in fact - it’s powerful combination.

A bit of tech info

We are having 2 main architectural units: core and connectors. Core, is Express.js application having both serving static content and providing API. The API itself, consists on public and private parts. Public part is aimed our web client (or potentiall apps), where the private is used to communicated connectors.

Connectors are just very simple HTTP services, which perform the handshake with core and then post back all data they have collected through API’s. That means, we have 3 connectors now - twitter, github and facebook. Facebook, became a quite difficult to integrated with, so we currently dropped it.

We are having CouchDB as our storage. We took it, because @voronianski had some good experience with. That appeared to be a very lucky decision. CouchDB is very interesting NoSQL solution. It’s storage model has few interesting features. One of them is “merge-update”. Means, you can post exactly same set of information many times, but CouchDB would not create new entities. It would merge identical documents into one. That simplied connectors very much, since they no longer need to track only new information, but could post back just a transformed bulk of information from API’s.

Initially, we all agreed - our UI will never be default Bootstrap theme. It’s overused and impress no more as toilet door. That’s where @mamant apply his best skills. He carefully worked all our screens making a it look nice and original.

likeastore dashboard screen

Presentation and feedback

Without few features we did demo-able version in time. We have concluded few major fixes, just before the deadline.

I did a presentation of app in short way, without anything unimportant (at least I wish to think so) and we had received great feedback. People liked the idea, so we’ve collected 32 voices that brought us 2nd place.

That gives a much of inspiration for further work! All of us are very enthusiastic to make the stuff done. It’s a lot of work, actually.

I just want to say thank you to all organizers of this event, it was nicely handled. And to the team, for making it fun and interesting.

Stay tuned for release of “Likeastore”, check out sources in a meanwhile.