Stay Agnostic, Stay Classy

We are often asked about our tech-stack and our primary language. Our stack is defined by the problems we solve. We are completely language agnostic and we decide our tech based on the problem at hand and eventual scalability. We have over sixteen micro-services. Here is the majority of our tech stack.

Server-Side

Our language of choice on server side was Javascript—mostly ES5 on older code and newer in Harmony. We love JS in many ways—it is simple to write micro-services in NodeJS. Off late we have been writing our newer services in Go lang after their 1.5 release. Go lang is a simple language which anyone can pick in a day and be an expert on day 2. GoLang has a smaller memory footprint, awesome go routines and improved GC. Combine this with vast go libraries, super fast builds it is a no brainer.

Our current go-to language is Go (No pun intended).

logo

Go-Lang

logo

NodeJS



To integrate with legacy systems e.g. SOAP services, we use springboot—a micro framework based on Spring. We are familiar with spring but you have a lot of choices here- Vertx, Spark, Ninja, Jodd. Our open API is based on Amazon API gateway and lambdas. We are able to scale up to 100,000 Requests per second without breaking a sweat.

logo

Java

logo

Amazon API Gateway

Here are a few frameworks we use on server side in combination with the languages I mentioned above.

logo

Goji

logo

SpringBoot


logo

Express


Our analytical database is based on Redshift—its pricey but the best out there. We use Redis for caching and everything in Clearplan is run asynchronously to maintain transactions and durability—we use AMQP. We process over 1.5 million events on an average every day using Rabbit MQ. Our uptime is over 310 days on rabbit and this is our single point of failure - but remember rabbit is built for this.

Most of the micro services interact with each other using Rabbit MQ. Nginx is solid but we are thinking of migrating to HA Proxy to get load balancing - it is now the standard.

logo

MongoDB

logo

Amazon Redshift

logo

RabbitMQ

logo

Redis

logo

Nginx

Web

We love AngularJS 1.4 here at Clearplan and have extensive codebase in angular. We started using ReactJS as a view component where we need performance, more on that here. We started our project a while ago—so most our build is based on Grunt. We are a LESS shop using bootstrap, but we might change that as Sass is now a big deal.

We never migrate code as it does not have business value. We build newer stuff with newer components. This is the best advantage you get when you build using micro-services. All our graphs are based on D3. We pay a ton of money to Google maps, but feel that it's worth every penny.

logo

AngularJS

logo

ReactJS

logo

BootStrap

logo

Less

logo

Bower

logo

Grunt

logo

D3

logo

Google Maps

Mobile

Nothing funky here, industry standards of using Android Studio and Xcode—including tests, deployment and builds. We use Crashlytics and Beta to do our beta distribution and collect user analytics.

logo

Xcode

logo

Android Studio

logo

Crashlytics



Third Party Components

We use Stripe as our payment gateway and Mandrill for email reports. Intercom is our user analytics and CRM. We have integrated intercom on all platforms—iOS, Android and Web. We use MailChimp for email marketing.

logo

Stripe

logo

MailChimp


logo

Mandrill


logo

Intercom

Deployment

There is no rocket science here, we follow the industry standards of Jenkins which build Docker images and use Docker Hub to distribute. We use Einhorn and PM2 to keep restarts and crashes to Zero time.

We are super crazy about continuous deployment and have a record of 1372 deployments to-date on all platforms, apps and services.

logo

Jenkins

logo

Docker

logo

Einhorn