├── Dockerfile
├── LICENSE
├── README.md
├── package.json
├── src
│ |── config
│ | └── envVars.ts # load environment variables
│ ├── generatedTypes.ts # yarn generate; import for automatic type checking
│ ├── index.ts # launches server
│ ├── schema
│ │ ├── books # alternative schema can also be organized by entities
│ │ │ ├── index.ts
│ │ │ ├── mutations.ts
│ │ │ ├── queries.ts
│ │ │ └── types.ts
│ │ ├── index.ts # combine and export all typedefs and resolvers into single schema
│ │ ├── mutations # all mutations and associated resolvers
│ │ │ ├── index.ts
│ │ │ └── mutation.ts
│ │ ├── queries # match file name to query; can group queries into folders
│ │ │ ├── index.ts
│ │ │ └── query.ts
│ │ ├── subscriptions
│ │ └── types # all data and input types shared across queries, mutations, and other types
│ └── util # utility libraries
│ └── logger.ts
├── tools
│ ├── codegen.yml # gql-gen command configuration
│ └── generate-gql.sh # launch server for generateTypes.ts; then kill process
├── tsconfig.json
└── yarn.lock
- Foundational code with sample query & mutation (playground @ /graphql)
- Add generatedTypes.ts based on schema using
yarn generate
- Base-line folder structure and schema merging strategy
- Dockerfile with health check
- Add logger based on winston
- GZIP compression
- Handle environment variables
- Setup instructions
- dataloader
- Authentication
- RBAC using graphql-shield
- Links to good type design examples
- Middleware layer using graphql-middleware
- 3rd Party REST API integration (w/ LRU caching)
- Schema stitching