Languages and Technologies (backend)

Node.js

In order to keep it simple, we are not using Babel for the backend since Node.js already supports most of the ES features. We add esm package to support ES Modules as well.

GraphQL

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools. For guides about GraphQL, have a look at How to GraphQL.

Apollo Server

Since GraphQL is just a specification, we will need an actual GraphQL implementation for Node.js. Apollo will be the chosen one due to the many features it provides. For simplicity, however, we add graphql-yoga to easily configure our Apollo server with Express.js (and add a bunch of extra features such as GraphQL Playground!) Apollo v2 already provides most of the utilities of graphql-yoga!.

Auth0

Authentication is always a very important but incredibly tedious feature to implement. We will rely on Auth0 service for providing basic authentication. It offers a very generous free tier and is easy enough to get started quickly.

Have a look at authentication section for a step by step guide.

Database

Prisma

Prisma turns our database into a GraphQL API which can be consumed by our backend server. This means we only need to deal with GraphQL and its SDL to define data models and queries.

Prisma is open source and provides development servers (in Prisma Cloud) with MySQL databases for free that will help us to get our project started very quickly.

Have a look at database section for a step by step guide.