The web applications, platforms, portals, and even some of the heavy-duty websites we build use the most trusted, reliable, secure, and scalable tech on the market. Our engineering acumen consists of words like: AWS, Micro-services, APIs, Node.js, MongoDB, ElasticSearch, PostgreSQL, Memcached, AngularJS, and RabbitMQ, among others.

In order to weave all of this technology together into elegantly constructed, enterprise-grade systems, our micro-services based architectural approach features a decoupled front-end, using AngularJS, that communicates seamlessly via Node.js APIs with the back-end. Session management and caching is managed by Memcached. Read and Write stores are decoupled: read through ElasticSearch and written to either MongoDB or PostgreSQL. Syncs between the stores are completed in milliseconds by background Workers.

Advantages of this Approach
  • Enterprise-grade systems can be build on a startup budget
  • Each engineer is free to work in parallel with the rest of their team
  • API gateways allow us to branch different versions and behaviors based on HTTP headers, without touching the code
  • Systems can be scaled and extended easily and at exceptionally low cost
  • Transitioning to or integrating with native and hybrid mobile solutions is seamless

Want to hear more? Schedule a call with our CTO.

What about Testing?

Not a line of code is written at New Haircut until there's an end-to-end plan to test it. And since we're such big proponents of JavaScript tech like Node.js and AngularJS, we've identified best-of-breed processes and tools to ensure all of the applications we build are battle-ready.

Is there a limit on the amount of testing you can do? The ideal answer is no. The right answer is to establish and optimize your test plan in advance, so that testing is always leading development.

Our test plans include four layers of testing in order for any of our client products to become QA-certified launch candidates: unit, integration, end-to-end (E2E) and manual.

  • Unit Tests are run against the smallest testable components of an application to ensure constant integrity. We use tools like Mocha and Chai to manage and execute these tests each and every time code is checked into its Git repo.
  • Integration Tests confirm that communication amongst services are working as expected. We use Frisby for these tests.
  • E2E Tests run across the entire system to validate that the end-user experience is acceptable. Nightwatch is out tool of choice here.
  • Manual Tests are managed by our in-house QA Department, because sometimes humans need to check the work of other humans.

Why Node.js?

It’s a simple choice when you think about the purpose of Node -- a non-blocking environment for JavaScript, designed specifically for constructing micro-service APIs. Our APIs can run on even the smallest instances, using few resources, and optimized for HTTP calls. When we scale, we scale horizontally instead of vertically -- this means costs are efficiently optimized. JavaScript is also a simple language, simplifying team dynamics during deployments and testing.

And the finishing touch? We use TypeScript on top of JavaScript to ensure an enterprise-grade codebase, supported with classes and type definitions.