/reason-graphql-fullstack

Fullstack Reason + GraphQL Todo List App

Primary LanguageOCamlMIT LicenseMIT

Reason / GraphQL Shared Backend

This is an example of a fullstack Reason + GraphQL application that uses a native backend and a client compiled to JavaScript through BuckleScript, whilst sharing types between the backend and the frontend.

Technologies / Libraries:

This was initially based on @jaredly's isomagic-todos experiment that accomplished sharing types between the backend & frontend through some PPX magic.

In this case, we leverage the power of GraphQL and its support in OCaml through ocaml-graphql-server and graphql_ppx to build our API through shared OCaml / Reason types (have a look in src/shared).

Running

Build the front-end

  • yarn && yarn build && yarn bundle

Build and run the backend

Note: it's a quiet startup; check http://localhost:8080/graphql to see that it's running!

  • npm install -g esy
  • esy @server
  • esy @server x graphql

Neat tricks

  • GraphQL schema fully defined in Reason (see src/server/schema.re)
  • There's also a GraphiQL instance at localhost:8080/graphql for exploring and playing with the queries and mutations.

License

MIT