Dotan Simha
Written By
Dotan Simha
CTO @ The Guild

Dotan is the CTO of The Guild.

node-typescript-helix Tutorial - Introduction


GraphQL is the rising star of backend technologies. It’s a popular alternative for REST as an API design paradigm and is becoming the new standard for exposing the data and functionality of a web server.

In this tutorial, you’ll learn how to build an idiomatic GraphQL server entirely from scratch.

You are going to use the following technologies:

  • Node.js - as an engine and runtime for our server.
  • TypeScript - a strongly typed programming language which builds on JavaScript giving you better tooling at any scale.
  • fastify - a rising star in the HTTP servers ecosystem, very fast and efficient.
  • graphql-js - we will use the core graphql library as execution engine for our server.
  • graphql-helix - a collection of utility functions for building your own GraphQL HTTP server.
  • Prisma: Replaces traditional ORMs. Use Prisma Client to access your database inside of GraphQL resolvers.
  • GraphiQL: A “GraphQL IDE” that allows you to interactively explore the functionality of a GraphQL API by sending queries and mutations to it. It’s somewhat similar to Postman which offers comparable functionality for REST APIs. Among other things, GraphiQL:

    • Auto-generates comprehensive documentation for all available API operations.
    • Provides an editor where you can write queries, mutations & subscriptions, with auto-completion(!) and syntax highlighting.

You can find the code of the tutorial in this repository.

What to expect

The goal of this tutorial is to build an API for a HackerNews clone. Here is a quick rundown of what to expect.

You’ll start by learning the basics of how a GraphQL server works, simply by defining a GraphQL schema for the server and writing corresponding resolver functions. In the beginning, these resolvers will only work with data that’s stored in-memory - so nothing will persist beyond the runtime of the server.

Nobody wants a server that’s not able to store and persist data, right? Not to worry! Next, you’re going to add a SQLite database to the project which will be accessed using Prisma 3.

Once you have the database connected, you are going to add more advanced features to the API.

You’ll start by implementing signup/login functionality that enables users to authenticate against the API. This will also allow you to check the permissions of your users for certain API operations.

Next, you’ll allow the consumers of the API to constrain the list of items they retrieve from the API by adding filtering and pagination capabilities to it.

Let’s get started 🚀

Unlock the next chapter
What database are you using in this tutorial?