🚀 Advanced starter code for a scalable, production-ready GraphQL server written in TypeScript, including authentication and realtime functionality with GraphQL subscriptions.
- Scalable GraphQL Server:
graphql-yogabased on Apollo Server & Express
- GraphQL-native database: Includes GraphQL database binding to Prisma (running on MySQL)
- Out-of-the-box support for GraphQL Playground & Tracing
- Simple data model – easy to adjust
- Authentication based on email & password
- Realtime functionality with GraphQL subscriptions (coming soon)
You need to have the following tools installed:
- Node 8+ & TypeScript
- GraphQL CLI:
npm i -g graphql-cli
# 1. Bootstrap GraphQL server in directory `my-app`, based on `typescript-advanced` boilerplate graphql create my-app --boilerplate typescript-advanced # 2. When prompted, choose the Prisma cluster you want to deploy to # e.g. prisma-eu1 or prisma-us1 to deploy to a public cluster (recommended) # or locally (requires Docker) # 3. Navigate to the new project cd my-app # 4. Start server (runs on http://localhost:4000) and open GraphQL Playground yarn dev # or # yarn start # (only starts the server, no access to the Prisma API)
Note: We recommend that you're using
yarn devduring development as it will give you access to the GraphQL API or your server (defined by the application schema) as well as to the Prisma API directly (defined by the Prisma schema). If you're starting the server with
yarn start, you'll only be able to access the API for the application schema.
add to model
- add in
yarn graphql prepare# for type generation
yarn startstarts GraphQL server on
http://localhost:4000(only allows access to the _appl)
yarn debugstarts GraphQL server in debug mode (open chrome://inspect/#devices to debug)
yarn devstarts GraphQL server opens the GraphQL Playground for the
yarn playgroundopens the GraphQL Playground for the
yarn prisma <subcommand>access to local version of Prisma CLI (e.g.
yarn prisma deploy)
/ - configuration files
.envContains important environment variables for development. Read about how it works here.
.graphqlconfig.ymlGraphQL configuration file containing the endpoints and schema configuration. Used by the
graphql-cliand the GraphQL Playground. See
graphql-configfor more information.
/database - Prisma service
database/prisma.ymlThe configuration file for your database service (documentation).
database/datamodel.graphqlcontains the data model that you define for your database service (written in SDL).
/src - application server
src/schema.graphqldefines your application schema. It contains the GraphQL API that you want to expose to your client applications.
src/index.jsis the entry point of your server, putting everything together and starting the
src/resolvers/contains the actual business logic of your application. In GraphQL, you implement resolver functions that resolve a specific query being requested.
src/generated/prisma.graphqldefines the database schema. It contains the GraphQL API exposed by the Prisma Database. This file is automatically generated every time
yarn prisma deployis executed, according to the datamodel in
src/generated/prisma.tscontains the generated TypeScript type definitions from the
prisma-binding. You can read more about static bindings in this article.