Skip to content

feats/perfect-graphql-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEPRECATION NOTE:

This project has started a couple of years ago as we intended to create a way to allow developers to focus on building a structured domain based on well defined patterns instead of having the mess of loose uncoupled resolvers.

Unfortunately we haven’t had the proper time to develop this project further, so it has never gained enough momentum. Since then, as well, lots has changed in the ecosystem. A lot of the goals of this project have already been achieved by other projects, such as https://prisma.io.

Prisma is probably the way to go if you look for something mature and reliable. If you feel adventurous, though, you can take a look at our new experiment: https://github.com/zvictor/faugra.


Perfect GraphQL Starter

"Have no fear of perfection, you’ll never reach it." - Salvador Dali

Why

This project aims to be a place for the community to spread good practices and the use of related technologies.

It is inspired by the tutorial How to build a GraphQL server and its repository.

There will never be an agreement on a perfect boilerplate project for any technology we are aware of and it would not be different for a GraphQL-based project. But it doesn't mean we should not try to get as close as we can get from it. So please don't mind our pretentious project name, it's just a catchy one.

Install

As simple as that:

git clone https://github.com/Quadric/perfect-graphql-starter
cd perfect-graphql-starter
npm install
npm start

Getting started

(Run)

{
  getAuthor(_id: 2) {
    lastName
    posts {
      text
    }
  }
}
  • Hit the play button (cmd-return), then you should get this on the right side:
{
  "data": {
    "getAuthor": {
      "lastName": "Lombardi",
      "posts": [
        {
          "text": "Perfection is not attainable, but if we chase perfection we can catch excellence.",
        }
      ]
    }
  }
}

Examples

There is more you can try! Go back to the interactive tool and paste any of the following snippets there and check the result:

(Run)

{
  getAuthor(_id: 2) {  # Almost the same as
    firstName          # before, but with extra
    lastName           # fields.
    posts {
      title
      text
      views
    }
  }
}

(Run)

{
  getPostsByTitle(titleContains: "fear") {
    title               # Try adding the 'author'
    text                # field anywhere inside
    views               # this block ;)
  }
}

(Run)

{
  getPostsByAuthor(authorId:1) {  # This author has a private
    title                         # post. You should get an
    text                          # Authorization error.
    views
  }
}

About

a boilerplate for your GraphQL server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published