@jagql/framework

A config driven NodeJS framework implementing json:api

Stats

StarsIssuesVersionUpdatedCreatedSize
@jagql/framework
49435.6.143 years ago3 years agoMinified + gzip package size for @jagql/framework in KB

Readme


jagql

Build Status codecov npm (scoped) Dependencies Status Greenkeeper badge



A resource driven framework to set up a {json:api} + GraphQL endpoint in record time.

Motivation

Let us look at these great articles written by some very experiences developers -

  1. Phil Sturgeon says if you use json:api you do not need GraphQL
  2. Bill Doerrfeld writes about the benefits of json:api
  3. Jorge says json:api is a simple alternative to GraphQL
  4. Jeremy Sherman says he is not impressed by json:api and GraphQL is better
  5. Brandur says GraphQL is the next frontier in Web Developement

If you ask me, I'd say -

And in fact, some of the most used public APIs like Github have both REST and GraphQL.

jagql lets you build a backend with both {json:api} and GraphQL support really really fast.

About this Fork

NOTE: This is a fork of holidayextra's jsonapi-server We have merged a lot of pending PRs on the original repo that we felt we would gain advantage from. The original project was coing a bit too slowly for our needs.

Differences from upstream

primaryKey is configurable

In upstream, keys are by default uuid and are taken from DB, if generateId = true We instead use a different property primaryKey, whose possible values are

  • uuid : Uses UUID v4 (generated from the client)
  • autoincrement : Uses AUTOINCREMENT integers

*In future there might be other types of primaryKeys if required.

relationship key type is configurable

When creating a field, you can state how to relate it

jsonApi.define({
  ... 
  attributes: {
    ... 
    author: jsonApi.Joi.one('people').uidType('uuid')
    ...
  }
})

You'd want to use our version of jsonapi-store-[*] plugins with this as the original versions will not be compatible with this

The old readme here is verbatim copy of the original project

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.