GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
I like GraphQL. The learning curve is high, espcially if you're trying to create a server, but it's ability to drill down and pull the exact data you need is really cool. I've opted to jump straight in and learn how to create GraphQL servers using Typescript, so the focus will be there.
Easiest way to consume GraphQL sources is definitely Gatsby. It currently powers avalonstar.comโmainly because of Gatsby's "set it and forget it" nature, and there's no user system to worry about.
โTypeGraphQL โ Framework for defining GraphQL schemas in Typescript.
โTypeORM โ ORM that syncs well with TypeGraphQL.
Example that shows a schema using both TypeGraphQL and TypeORM: https://github.com/MichalLytek/type-graphql/tree/v1.0.0/examples/typeorm-lazy-relationโ
For reference: https://graphql.org/learn/queries/โ
For pagination: https://github.com/wemaintain/auto-relayโ