https://blog.shanyue.tech/posts/graphql-development-guide-best-practices/