ctco/nodejs-graphql-template
Template project for Node.js® GraphQL APIs
nodejs-graphql-template
Node.js, Koa, GraphQL and TypeScript template project.
Batteries and opinions included 🙌
Features
-
Docker 🐳 configuration for production deployment, development and testing
-
GraphQL tools:
- GraphiQL
- GraphQL Voyager
- GraphQL Playground
- GraphQL IDL
- Apollo Tracing
-
Reference GraphQL Models and Connectors architecture implementation
-
CORS middleware
-
12 Factor Configuration with
.env -
Configurable logging
- powered by
winston
- powered by
-
Supercharged Development Mode
- Incremental TypeScript builds
- Automatic server restart on changes
- Linting
-
Testing
- Unit tests
- Integration tests for GraphQL schema
-
Reporting
- Test result export to JUnit format
- Coverage result export to Cobertura format
Required Software
node>= 8.1.4 &yarn
or
Docker>= 17.05
Install
- yarn:
$ yarn - Docker:
$ docker-compose up
Develop
- yarn:
$ yarn start - Docker:
$ docker-compose up --build
Attention Windows users: when Docker for Windows is not an option, install yarn and run $ yarn && yarn docker-mount beforehand.
Generate TypeScript types for GraphQL schema and default GraphQL resolvers
$ yarn gqlgen
Test
single test run
Run unit tests
$ yarn test:unit
Run integration tests
$ yarn test:integration
Run all tests
$ yarn test
Run e2e tests
Run the app or point E2E_TEST_URL to a remote instance you want to test against.
$ yarn test:e2e
Generate coverage reports
Set environment variable CI to true to generate coverage reports.
In *nix:
CI=true yarn test
In Windows:
set CI=true&&yarn test
Build
$ yarn build or $ docker build .
Tech Stack
-
TypeScript
-
Koa
-
GraphQL
-
Jest
-
winston
-
Docker