jaredonline / etsy-inventory-graphql

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Golang-Relay Starter Kit

This kit includes:

  • a NodeJS app server: to serve the front-end written with react-relay
  • a Golang GraphQL server: to serve the back-end graphql-go server that handles GraphQL queries
  • a Babel transpiler workflow using webpack that you can use to get started building an app with Relay.

For a walkthrough, see the Relay tutorial.

Notes:

This is based on alpha version of graphql-go and graphql-relay-go. Be sure to watch both repositories for latest changes.

Installation

  • Install dependencies for NodeJS app server
npm install
  • Install dependencies for Golang GraphQL server
go get -v

Running

Start a local server:

npm start

The above command will run both the NodeJS app server and Golang GraphQL server concurrently.

Developing

JavaScript

Any changes you make to files in the js/ directory will cause the server to automatically rebuild the app and refresh your browser.

Golang

Schema data

Since Golang does not support loading package / module dynamically, remember to update the package import for schema data in:

  • graphql.go
  • scripts/updateSchema.go

For e.g

import (
  ...
  "github.com/sogko/golang-relay-starter-kit/data" // <--- update to package containing schema
)

Schema updates

If at any time you make changes to data/schema.go, stop the server, regenerate data/schema.json, and restart the server:

npm run update-schema
npm start

schema.json is needed by the JS code for ./build/babelRelayPlugin.js

Examples

  • todomvc-relay-go - Port of the React/Relay TodoMVC app, driven by a Golang GraphQL backend

Feel free to submit a PR to add to this list.

TODOs

  • Swap out express-graphql server with a Golang GraphQL server
  • GraphQL schema definition in Golang
  • Generate schema.json from schema definition for babel-relay-plugin
  • Generate schema.graphql from schema definition

Credits

This kit is build on top of https://github.com/relayjs/relay-starter-kit

About

License:Other


Languages

Language:JavaScript 82.9%Language:Go 12.5%Language:Ruby 4.2%Language:HTML 0.3%