graphql-hotels-example

GraphQL server example. Country/City/Hotel structure.

  • Owner: r0b1n/graphql-hotels-example
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

graphql-hotels-example

Tired of TodoMVC? So do I.

What is it?

This is yet another example of GraphQL server.
It provides you GraphQL backend, so you can play with queries in the GraphiQL.
While implementing this example I was trying to keep backend simple but provide clear and meaningful schema.

Features

  • To keep it simple this example uses in-memory storage. Initial data located in data.json file.
  • GraphiQL tool enabled and it is a way to play with GraphQL.
  • There is no frontend part. (But it would be good to implement example clients using Relay. react-native example in progress.)

Domain, Diagram and Schema. Small Intro.

What is our app about?

Let's imagine we are developing tourist guide program.

  • There is information about Countries our user may plan to visit.
  • Each Country contains Cities.
  • And each City has a bunch of Hotels.

Wait, what the backend without nice images? We will add Image to Country and list of Images for each City.

Now we can review the Relations Diagram.

Relations Diagram

relations diagram

Schema

Our schema allow us to fetch any shape of data.
For this we need to add entry points for lists and individual entity:

  • countries - List of Countries. For index page of our application with countries.
  • country(countryID) - Particular Country by ID. For individual Country page.
  • city(cityID) - Particular City by ID. For individual City page.
  • hotel(hotelID) - Particular Hotel by ID. For individual Hotel page.
About node entry point.

Have you noticed some kind of duplication in country, city, hotel?
For avoiding this Relay provides us ability to use one entry point for all individual entities called node:

  • node(ID) - Where ID is GraphQL UUID.
    For more information check this

But in this example I am going to leave all the entry points available.

How to run

  1. Install dependencies:
    npm install

  2. Run the server
    npm start

  3. Go to http://localhost:3000/graphql to open GraphiQL.

Main metrics

Overview
Name With Ownerr0b1n/graphql-hotels-example
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2016-01-23 20:42:51
Pushed At2016-08-08 23:54:53
Last Commit At2016-08-09 02:54:53
Release Count0
用户参与
Stargazers Count7
Watchers Count2
Fork Count1
Commits Count14
Has Issues Enabled
Issues Count2
Issue Open Count2
Pull Requests Count0
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private