Git Product home page Git Product logo

cs-graphql's Introduction

Client-Server GraphQL Architecture

A simple project illustrating how it's possibile to create a Ktor Web Server that provides GraphQL APIs over HTTP (POST), and an Apollo Client that can perform queries, mutations and subscriptions over the GraphQL server.

Server

Ktor has been used to build the Web Server. This leads to a lighter (compared to Spring) and simpler implementation of the GraphQL server. Thanks to GraphQL Kotlin building and setting up routes to the GraphQL endpoint is made easy.

For each element of the schema, we must build the model class (hopefully a data class), a data loader, for defining data fetching strategies, and the operations (queries, mutations or subscriptions) on top of them.

Every dataloader and operation must be included during the server's setup.

Instructions

Read server instructions for building and running the server.

Client

Being subscriptions not already supported by GraphQL Kotlin, Apollo GraphQL has been used, providing an even simpler way to handle GraphQL client side requests.

This library provides a gradle plugin that auto-generate all the schema classes and informations for providing, at compile time, static typing safety.

Once the schema is downloaded, and the gradle project is built, all the needed classes for quering the server will be generated inside the build/generated gradle folder. At this point, it's possibile to query the Server for both queries and mutations but also subscriptions.

Instructions

Read client instructions for building and running the client.


Future Developements

  • Explore Apollo Kotlin caching mechanisms and evaluate a self implementation using an in-memory DB like Redis.
  • Attaching a database
    • Building a docker architecture for DB and Server (<--gradle tasks).
  • Implement authorization and authentication.
  • Performance evaluation against REST APIs

cs-graphql's People

Contributors

s-furi avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.