Currently we only hire full-stack engineers as we follow a feature driven approach to development. Each engineer will be responsible for the end to end creation of fulfilling requirements. Before getting into the process of development, we’ll start with an introduction of the required stack.

Stack Overview

Nx

https://nx.dev/

We follow a mono-repo approach for version control. Having multiple repositories reduce the velocity of development. A single repo always enables greater code sharing, without us having to publish to NPM for re-use.

Nx a framework agnostic framework for managing. a monorepo. It provides a CLI tool to manage individual libraries & applications. Framework generators save us from having to configure optimal settings for running & building libraries.

React

https://reactjs.org/

We went with React because of the React native ecosystem, with future mobile development. React is also more bare metal than Vue.js, which offers a higher level of abstraction. AngularJS, seems to have much more opinion on how to structure the code, which can be good in certain cases. As a user interface layer, we believe React perfect suits that.

Next.js

https://nextjs.org/

React alone is difficult to deploy, and provides no built in routing. Sure we could use React Router, but Next.js handles SSR for us, which is a big missing component in SPA. Next.js is also easily deployed to a serverless environment, and contains many performance optimizations for us.

Mobx Keystone

https://mobx-keystone.js.org/

Local state is the glue between remote data and our UI, it processes and transforms data. We decided to go with Mobx Keystone, as it provides native classes to represent our domain model. We use this internally as well as for the platform's own local state management.

GraphQL Code Generator

https://www.graphql-code-generator.com/

GraphQL is heavily used in the project. We also take advantage of the strongly typed system for code generator. Given queries & mutations, we can generate React Apollo code for use on the frontend. Not only that, we can use GraphQL generated typescript typings in our code.

Cypress & Jest

https://www.cypress.io/