Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ctco/spring-boot-graphql-template
Spring Boot and GraphQL template project
https://github.com/ctco/spring-boot-graphql-template
graphiql graphql graphql-java-tools graphql-playground graphql-voyager spring-boot template
Last synced: 4 days ago
JSON representation
Spring Boot and GraphQL template project
- Host: GitHub
- URL: https://github.com/ctco/spring-boot-graphql-template
- Owner: ctco
- License: mit
- Archived: true
- Created: 2017-06-06T16:52:12.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-04-05T22:24:11.000Z (over 6 years ago)
- Last Synced: 2024-08-01T13:33:18.212Z (3 months ago)
- Topics: graphiql, graphql, graphql-java-tools, graphql-playground, graphql-voyager, spring-boot, template
- Language: HTML
- Homepage:
- Size: 120 KB
- Stars: 7
- Watchers: 9
- Forks: 5
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ccamel - ctco/spring-boot-graphql-template - Spring Boot and GraphQL template project (HTML)
README
[![Build Status](https://travis-ci.org/ctco-dev/spring-boot-graphql-template.svg?branch=master)](https://travis-ci.org/ctco/spring-boot-graphql-template)
# spring-boot-graphql-template
Spring Boot, GraphQL template project with batteries included.
## Features
- Docker :whale: configuration for production deployment, development and test
- Remote debugging for development mode## Required Software
- JDK 1.8
- Or docker + docker-compose### Lombok
#### IntelliJ
- Download and install Lombok [plugin](https://plugins.jetbrains.com/plugin/6317-lombok-plugin)
- Enable Annotation Processors
- Go to Setting->Build, Execution, Deployment-> Compiler->Annotation Processors
- Check _Enable annotation processing_
### GraphQL Tools
#### IntelliJ- Download and install GraphQLJs [plugin](https://plugins.jetbrains.com/plugin/8097-js-graphql)
### Style check
#### IntelliJ
- You can download "CheckStyle plugin". Then open Settings > Other Settings > Checkstyle. Add path to check-style.xml file
and provide link to check-style folder in "${configDir}". This will display errors in editor and it wont affect build/run.#### Gradle
- As default behaviour it is configured to call "checkstyleMain pmdMain" before "build" task is executed, which does not prevent
development (application start up and bootrun)## Develop
1.1. Run
- Gradle: `$ gradlew bootRun`
- Docker: `$ docker-compose up` (or `$ docker-compose up --build` if image should be rebuilt)1.2. Debug
Run remote debugger from IDE. Debug port is 5005
## Test
- Gradle: `$ gradlew test`
- Docker: `$ docker-compose -f docker-compose.test.yml up --build`## Build
- Gradle: `$ gradlew buld`
- Docker: `$ docker build -t spring-boot-graphql-template .`## Run productive
Assuming that the Docker image is already built on the previous step
- Docker (add `-d` to run in daemon mode): `$ docker run -p 8080:8080 spring-boot-graphql-template`
## Tech Stack
- [Spring Boot](https://projects.spring.io/spring-boot/) : Application framework
- [Feign](https://github.com/OpenFeign/feign) : HTTP Client library
- [Feign-Hystrix](https://github.com/OpenFeign/feign/tree/master/hystrix) : wraps Feign's http requests in Hystrix, which enables the [Circuit Breaker](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern) pattern.
- [Lombok](https://projectlombok.org/features/index.html) : Utility library for Java language
- [GraphQL](http://graphql.org/learn/) : API query runtime
- [GraphQL and GraphiQL Spring Framework Boot Starters](https://github.com/graphql-java/graphql-spring-boot)
- [GraphQL Java Tools](https://github.com/graphql-java/graphql-java-tools)
- [GraphQL Voyager](https://github.com/APIs-guru/graphql-voyager) : Represent any GraphQL API as an interactive graph. See [Voyager Sample](https://github.com/ctco/spring-boot-graphql-template/blob/master/VOYAGER.md)
- [GraphQL Playground](https://github.com/graphcool/graphql-playground/) : GraphQL IDE for better development workflows (GraphQL Subscriptions, interactive docs & collaboration). See [Playground Sample](https://github.com/ctco/spring-boot-graphql-template/blob/master/PLAYGROUND.md)
- Docker
- [Home Page](https://www.docker.com)
## Packaging
- Use the [Models and Connectors](https://dev-blog.apollodata.com/how-to-build-graphql-servers-87587591ded5) pattern to structure our GraphQL server code, since it is a well established pattern in GraphQL world. Such approach allows to refer to the existing approach instead of coming up with our own set of guidelines.