Awesome
<p align="center"> <img alt="GraphiteJS" src="https://raw.githubusercontent.com/graphitejs/server/HEAD/images/graphite.png" width="334"> </p> <p align="center"> Framework NodeJS for GraphQl </p> <p align="center"> <a href="http://graphitejs.com"><img alt="graphitejs" src="https://img.shields.io/badge/GraphiteJS-Beta-yellow.svg"></a> <a href="https://travis-ci.org/graphitejs/server"><img alt="TravisCI Status" src="https://travis-ci.org/graphitejs/server.svg?branch=master"></a> <a href="https://codecov.io/gh/graphitejs/server"><img alt="Codecov Status" src="https://codecov.io/gh/graphitejs/server/branch/master/graph/badge.svg"></a> <a href="#badge"> <img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"> </a> <a href="https://www.npmjs.com/package/@graphite/server"> <img alt="npm latest version" src="https://img.shields.io/npm/v/@graphite/server/latest.svg"> </a> </p> <br />GraphiteJS is a NODE.JS Framework for building GraphQL schemas/types fast, easily and with scalability.
- Easy to use: GraphiteJS make easy GraphQL in NodeJS without effort.
- Any Front: GraphiteJS support any front library.
- Data agnostic: GraphiteJS supports any kind of data source.
Guide
Install
npm i @graphite/server --save
yarn add @graphite/server
on your index file:
import { Graphite } from '@graphite/server'
main = async () => {
const graphite = await Graphite()
}
main()
and that's all, you have running the graphqli tool on the port 4000 by default.
How to use
After install @graphite/server
you have to create your first model. We recommend creating a folder called models and follow the pattern matching the filename with the Type name.
Types
import { GraphQL } from '@graphite/server'
export const Developer = GraphQL('Developer')({
// the value always have to be an array first arg is the type, the second arg is an optional comment
name: ['String!', 'Your name is required'],
age: ['Int'],
isGreatDeveloper: ['Boolean']
})
So, now you need to pass this model to the Graphite Server
on index.js
import { Graphite } from '@graphite/server'
import { Developer } from './models/Developer'
main = async () => {
await Graphite({ models: [Developer] })
}
main()
Queries
import { GraphQL } from '@graphite/server'
export const Developer = GraphQL('Developer')({
name: ['String!', 'Your name is required'],
age: ['Int'],
isGreatDeveloper: ['Boolean'],
Query: {
'developer: Developer': () => ({ name: 'Your name' }),
'developers: [Developer]': () => ([{ name: 'Your name' }]),
}
})
Mutations
import { GraphQL } from '@graphite/server'
export const Developer = GraphQL('Developer')({
name: ['String!', 'Your name is required'],
Mutation: {
'createDeveloper(name: String): Developer': (_, { name, }) => ({ name }),
'updateDeveloper(id: ID!, name: String): Developer': (_, { name }) => ({ name }),
'removeDeveloper(id: ID!): Developer': (_, { name }) => ({ name }),
},
})
Subscriptions
import { GraphQL, PubSub } from '@graphite/server'
const pubsub = new PubSub()
const DEVELOPER_ADDED = 'DEVELOPER_ADDED'
export const Developer = GraphQL('Developer')({
name: ['String!', 'Your name is required'],
Mutation: {
'createDeveloper(name: String): Developer': (_, { name, }) => {
pubsub.publish(DEVELOPER_ADDED, { developerAdded: { name } })
return { name }
},
},
Subscription: {
'developerAdded: Developer': {
subscribe: () => pubsub.asyncIterator([DEVELOPER_ADDED]),
},
},
})
Relations
// models/Repository.js
const Repository = GraphQL('Repository')({
name: ['String'],
url: ['String'],
})
// models/GithubProfile.js
const GithubProfile = GraphQL('GithubProfile')({
url: ['String'],
})
// models/Developer.js
const Developer = GraphQL('Developer')({
name: ['String'],
'respositories: [Repository]': () => [{ name: 'GraphiteJS', url: 'https://github.com/graphitejs/graphitejs' }],
'githubProfile: GithubProfile': () => ({ url: 'https://github.com/wzalazar' }),
Query: {
'developer: Developer': () => ({ name: 'Walter Zalazar' }),
},
})
So, now you need to pass this model to the Graphite Server
on index.js
import { Graphite } from '@graphite/server'
import { Developer } from './models/Developer'
import { Repository } from './models/Repository'
import { GithubProfile } from './models/GithubProfile'
main = async () => {
await Graphite({ models: [Developer, Repository, GithubProfile] })
}
main()
Contributing
Please see our contributing.md
- Clone this repository.
- Install dependencies.
npm install
- Feel free for pull request.
Team
Creator
Walter Zalazar |
:octocat: @wzalazar |
:bird: @wzalazar_ |
Core members
Walter Zalazar | José Luis Casella |
:octocat:@wzalazar | @jl-casella |
:bird:@wzalazar_ | @jl-casella |