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
it's a quiet startup; check http://localhost:8080/graphql to see that it's running!
- Make sure you have
opam
(version 2) installed and are on a switch >= 4.03 (ocaml-graphql-server
requires at least OCaml 4.03) opam pin add reason --dev-repo
opam install . --deps-only
make run
(to run the server)
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