The Bonomi Tech-Stack

Hey this is Agoston here, I am the CTO aka ‘the developer guy’ at Bonomi. One part of my role at the company, at this early stage, is that I make sure we create our product scalable from the very beginning.

We have big ideas and even bigger dreams and I help overseeing every technical aspect of this small enterprise, and more specifically, the creation of the Bonomi Assistant.

So, what is the Bonomi Assistant? It is a Messaging Assistant tailored to the hospitality industry. It is not simply a chatbot, it is a lot more. It is a platform that enables hotels to help their guests during their whole stay. It is an intelligent tool to answer questions and to help hotel staff. Even more, it is also a marketing system to leverage the power of chatbots.

Bonomi Assistant integrates with many external service providers, PMSs, booking engines, etc. Therefore, it was important for us to choose technologies that help us connect to other services quickly and easily, and also, to bootstrap our development efforts and support us on the long term.

In this blog post, I am going to write about our tech-stack that helps us to achieve just that. I will focus on 3 key things: Javascript/Typescript, Heroku and Wit.ai.

TL’DR

Our tech-stack supports quick setup, easy integrations and scaling up. We need to act fast and so we need tools that help us out of the box without any hassle. For this, we use the following:

The Backend: NodeJS, TypeScript, Express, EJS, Winston, TypeDI, Sequelize

The Frontend: React, Typescript, Bootstrap, Chart.js, Redux, Moment.js

Infrastructure: Heroku, Postgres, SendGrid, Logentries

AI: Wit.AI

Javascript — One size fits all

Yep, we love Javascript

When it comes to our technical stack, it is important for us to choose technologies that help us iterate on our product fast. We work as a true startup: we have a lot of ideas, we test out new features very quickly and we are not afraid to move on fast either.

And sometimes, we have no idea what we are doing. And that’s okay.

So how come Javascript? 10 years ago Javascript was a toy language for the web. Today, it is a mature platform with all state of the art features that you would expect.

Ever since the rise of NodeJS, the Javascript community created every tool that any developer can dream about. Most of them are Open Source.

Advantages of Javascript as your primary language:

  • Easy to learn
  • The community around it is very active (you can use the Npm package manager to install anything you need)
  • We can use Javascript for all of our services (backend and frontend)
  • +1 you can even write mobile apps with Javascript (React Native)

Typescript — The seatbelt on Javascript

The ‘dark side’ of Javascript

Our backend service is a mission-critical component. If it’s down, all our chatbots suffer, and anyone who wants to interact with them gets disappointed.

Typescript takes all the advantage of Javascript, and makes it as safe to use as any statically typed language.

What I specifically like about it, is that you can learn it progressively and also adapt it progressively. A new developer who doesn’t know Typescript can start contributing in Javascript, and over time learn Typescript on the job. Javascript can very easily be rewritten to Typescript with adding types and a few other changes.

It even supports dynamic variables. Just add type ‘any’ and essentially it works just like Javascript.

So, is it really worth the hassle? Oh yeah baby.

Typescript makes your code very safe. Ever since we moved to Typescript, I haven’t had a single bug that I had to manually debug for more than 10 minutes. Error messages are a lot more helpful too, and Javascript’s dynamic variable handling won’t swallow type errors.

Advantages of using Typescript:

  • Code completion, code analysis and other goodies out of the box
  • Triples the productivity of a Javascript developer, write less and do more
  • Say goodbye to frustrating hours trying to figure out what went wrong in your code

Heroku — The one-click infrastructure

When saying ‘server’ is not classy enough

When our CEO appointed me to oversee all technical aspects of the company, I didn’t have weeks to figure out how our infrastructure will look like. I had to be productive from day one.

For a very long time, I wanted to try Heroku because it seemed like just the perfect tool for a startup. It also runs on AWS instances so it’s very reliable.

What I love about it the most is that with a couple of clicks, you can build up your whole infrastructure. Also, you don’t need to spend hours or days on tasks that has no relevance to you at all. I want out of the box solutions for my little app, nothing fancy just things that make sense when starting up a project. Heroku can do that very nicely.

So far, I am very satisfied with Heroku. We went from zero to hero within weeks thanks to it, and it helped us be productive from the first second.

Advantages of deploying with Heroku:

  • Supports your development workflow with CI, environments and promotion to production
  • Integrates well with Github, and most importantly, with NodeJS and Npm
  • Add-ons are amazing, you can find all the external services you need with one-click installment, for example email service, logging, database and so on
  • You can start using it for free, and it also supports autoscaling

Wit.AI — NLP from Facebook

It’s not a chatbot, it’s a Messaging Assistant

Our platform wouldn’t be too good without AI in it. When guests want answers 24/7, natural language processing (NLP) helps us understand what is exactly they are looking for.
This is the task that Wit.ai helps us excel in.

What I love about Wit.ai is that it is very developer friendly. You can literally integrate it to your app in a matter of minutes. The support is just great and Wit.ai made sure that the whole service is built around the idea that a developer should be able to work with it very fast and very efficiently.

Furthermore, it is simple and knows a lot. It may not be as fully-featured as its competitors, but it was the perfect choice for our use-case, and it allowed us to very quickly test out the creation of an intelligent chat robot that answers guests’ queries with high effectiveness.

Advantages of Wit.ai:

  • The most common scenarios are supported out of the box. The built-in entities can recognize dates, places, duration of time, just to mention a few. Just add a new phrase with a sentiment entity, and from there on Wit.AI identifies all sentiment related words and phrases in your input messages
  • It supports Hungarian. This was crucial for us, because our test market is Hungary and our vision is to support 20+ languages
  • You can export your data any time and move it to wherever else you want
  • The built-in web interface makes it easy to teach your AI with new phrases

Summary

In a startup, it is of utmost importance to act quickly and scale fast. Javascript, Heroku and Wit.AI helps us to do that, and therefore we believe that these are the perfect tools for a startup that wants to move fast. They were promising technologies in the beginning and didn’t let us down. I cannot recommend them enough.

Join us on this journey, follow this blog for news, insights and behind the scenes of a hospitality startup!