https://github.com/katt/whycantihaveidinmyname
WHY
https://github.com/katt/whycantihaveidinmyname
Last synced: 12 months ago
JSON representation
WHY
- Host: GitHub
- URL: https://github.com/katt/whycantihaveidinmyname
- Owner: KATT
- Created: 2018-01-25T15:24:24.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-29T10:25:37.000Z (over 8 years ago)
- Last Synced: 2025-07-08T20:13:41.617Z (12 months ago)
- Language: TypeScript
- Homepage: https://github.com/graphcool/prisma/issues/1733
- Size: 71.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# typescript-advanced
🚀 Advanced starter code for a scalable, production-ready GraphQL server written in TypeScript, including authentication and realtime functionality with GraphQL subscriptions.
## Features
- **Scalable GraphQL Server:** `graphql-yoga` based on Apollo Server & Express
- **GraphQL-native database:** Includes GraphQL database binding to Prisma (running on MySQL)
- Out-of-the-box support for [GraphQL Playground](https://github.com/prisma/graphql-playground) & [Tracing](https://github.com/apollographql/apollo-tracing)
- Simple data model – easy to adjust
- Preconfigured [`graphql-config`](https://github.com/prisma/graphql-config) setup
- Authentication based on email & password
- Realtime functionality with GraphQL subscriptions (_coming soon_)
## Requirements
You need to have the following tools installed:
* Node 8+ & TypeScript
* GraphQL CLI: `npm i -g graphql-cli`
## Getting started
```sh
# 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 dev` during 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.
## Docs
### Commands
* `yarn start` starts GraphQL server on `http://localhost:4000` (only allows access to the _appl)
* `yarn debug` starts GraphQL server in debug mode (open [chrome://inspect/#devices](chrome://inspect/#devices) to debug)
* `yarn dev` starts GraphQL server opens the GraphQL Playground for the `projects` defined in [`.graphqlconfig.yml`](./.graphqlconfig.yml)
* `yarn playground` opens the GraphQL Playground for the `projects` defined in [`.graphqlconfig.yml`](./.graphqlconfig.yml)
* `yarn prisma ` access to local version of Prisma CLI (e.g. `yarn prisma deploy`)
### Project structure
#### `/` - configuration files
- [`.env`](./.env) Contains important environment variables for development. Read about how it works [here](https://github.com/motdotla/dotenv).
- [`.graphqlconfig.yml`](./.graphqlconfig.yml) GraphQL configuration file containing the endpoints and schema configuration. Used by the [`graphql-cli`](https://github.com/prisma/graphql-cli) and the [GraphQL Playground](https://github.com/prisma/graphql-playground). See [`graphql-config`](https://github.com/prisma/graphql-config) for more information.
#### `/database` - Prisma service
- [`database/prisma.yml`](./database/prisma.yml) The configuration file for your database service ([documentation](https://www.prismagraphql.com/docs/reference/prisma.yml/overview-and-example-foatho8aip)).
- [`database/datamodel.graphql`](./database/datamodel.graphql) contains the data model that you define for your database service (written in [SDL](https://blog.graph.cool/graphql-sdl-schema-definition-language-6755bcb9ce51)).
#### `/src` - application server
- [`src/schema.graphql`](src/schema.graphql) defines your **application schema**. It contains the GraphQL API that you want to expose to your client applications.
- [`src/index.js`](src/index.js) is the entry point of your server, putting everything together and starting the `GraphQLServer` from [`graphql-yoga`](https://github.com/prisma/graphql-yoga).
- [`src/resolvers/`](src/resolvers) contains the actual business logic of your application. In GraphQL, you implement [resolver functions](http://graphql.org/learn/execution/) that *resolve* a specific query being requested.
- [`src/generated/prisma.graphql`](src/generated/prisma.graphql) defines the **database schema**. It contains the GraphQL API exposed by the Prisma Database. This file is automatically generated every time `yarn prisma deploy` is executed, according to the datamodel in `database/datamodel.graphql`.
- [`src/generated/prisma.ts`](src/generated/prisma.ts) contains the generated TypeScript type definitions from the `prisma-binding`. You can read more about static bindings in this [article](https://blog.graph.cool/reusing-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5).
## Contributing
Your feedback is **very helpful**, please share your opinion and thoughts! If you have any questions, join the [`#graphql-boilerplates`](https://prisma.slack.com/messages/graphql-boilerplates) channel on our [Slack](https://prisma.slack.com/).