Skip to content

Latest commit

 

History

History
100 lines (69 loc) · 6.64 KB

File metadata and controls

100 lines (69 loc) · 6.64 KB

Overview

Hi there, you are probably new to the project. Here you can find a quick overview of what you can expect and what is expected from you as a contributor.

Technology

General

The codebase is all TypeScript and NodeJS. For more info please see the Technical Direction. We use NX to manage the monorepo structure. We have one set of NodeJS modules used by all code and any changes in there affect potentially multiple services.

Tool Description
NodeJS scripts and server-side framework
TypeScript programming language
NX monorepo tools and code scaffolding

Frontend

Tool Description
React UI framework
NextJS front-end framework with routing and server side rendering
Treat css-in-js
Storybook develop and document React components in isolation
Apollo Client graphql client
GraphQL Code Generator generate GraphQL clients and types
Cypress automated browser testing tool
MirageJS API mocking for webapps

Backend

We use NestJS for the backend. Use the pre-packaged setup that we have and you will save us all some time. You can find the latest and greatest in how we setup a backend in our reference-backend

Tool Description
NestJS server-side framework for NodeJS
Sequelize database object relational mapper
OpenAPI Generator generate clients and types for OpenAPI APIs

Code Quality

Tool Description
Jest automated testing tool
ESLint code checker
Prettier code formatter

Protocols and specifications

Tool Description
GraphQL api protocol for our frontend projects
OpenAPI specification to describe rest apis
Open ID Connect authentication protocols

Repositories

Tool Description
PostgreSQL SQL database
Contentful headless content management system

Infrastructure

Applications are composed of services that are packaged in Docker containers and then deployed in a Kubernetes cluster using Helm. You will hardly need to know about this if you follow the path everyone else in the organization is walking. All our environments are hosted in AWS.

Tool Description
Docker virtual machine containers for continuous integration and deployment
Kubernetes host docker containers in production
Helm kubernetes deployment configuration

Practices

To contribute you need to follow the standard GitHub Pull Request (PR) workflow. When you open a PR, your code will be run through the CI process automatically. Ask for a code-review and when you get an approval, merge to main. Rinse and repeat.

When a code change gets on main, that will create Docker containers for all services and everything will get deployed to Dev env. For more info please see the Continuous Delivery process.

We expect contributors to deliver the following:

  • the business logic
  • the tests
  • documentation
  • logs
  • metrics

Starting a new project/application

If you are adding a new application, please follow the instructions here.

Dockerizing

You simply need to add an NX target to your service to enable creating a Docker image for it. For more info see dockerizing.

Kubernetes

We have a Helm chart template that should fit most services. You pretty much only need to add your ingress (optional), environment variables(optional) and secrets(optional) and your service can get deployed to Dev. For more info, please see Helm charts. For a read-only view of the Kubernetes cluster and the services running there head over to