GraphQL backend as a service
Clone or download
Latest commit 2e961c8 Sep 19, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
__tests__ Refactor TypeSets and context (#271) Nov 7, 2016
apps Refactor TypeSets and context (#271) Nov 7, 2016
authentication Refactor TypeSets and context (#271) Nov 7, 2016
bin Fix list-apps script crashing for null fields (#272) Nov 21, 2016
db Only leave out array fields from the sort (#275) Dec 21, 2016
graphQL Make the `id` field on Node types orderable by default (#273) Nov 21, 2016
public Upgrade graphql and graphiql (#245) May 2, 2016
server Refactor TypeSets and context (#271) Nov 7, 2016
test Refactor TypeSets and context (#271) Nov 7, 2016
.babelrc Babel6 (#252) May 4, 2016
.cfignore New Relic Sep 24, 2015
.eslintignore Add quick and dirty GraphiQL console Sep 24, 2015
.eslintrc Update outdated packages Nov 29, 2015
.gitignore Add files created at CI to ignore Sep 25, 2015
LICENSE Add an open source license (#276) Sep 19, 2017
Monitoring.js Properly report errors withouth request (#268) Jun 16, 2016
Procfile SSH tunnels from Heroku web worker Mar 7, 2016
README.md Add an open source license (#276) Sep 19, 2017
ReindexSchema.json Add support for development databases Mar 4, 2016
circle.yml Upgrade to Node v6.1.0 (#257) May 6, 2016
index.js Default require in babel6 is different (#253) May 4, 2016
npm-shrinkwrap.json Upgrade mongodb driver to new version (#270) Aug 17, 2016
package.json Add an open source license (#276) Sep 19, 2017
utilities.js Add support for multiple database clusters Dec 4, 2015

README.md

reindex-api

Note: This project is no longer maintained. The source code is released under the license specified in file LICENSE.

Circle CI

reindex-api is a multi-tenant, hosted GraphQL database solution. reindex-api converts a JSON based schema into a GraphQL API in addition to creating a database storage (MongoDB or RethinkDB) underneath. GraphQL API is fully Relay compatible and contains CRUD operations as entry points. Input is Relay-aware and declarative. Additionally, reindex-api provides Social Login with 5 providers (Auth0, Facebook, Google, Twitter and Github). Functionality of reindex-api can be extended by configuring hooks that call external web services. It also provides a rich permission system based on defining graph paths to the user type.

reindex-api was designed with scalability in mind, but so far doesn't have many possible performance improving tools, like e.g. cache or query optimizations.

Components

  • schema creator - gets list of types and creates db independent GraphQL API
  • database connector - abstracts out RethinkDB and MongoDB specifics
  • database migration tool - abstracts out changes to the database after schema is updated
  • permission checker - checks permissions based on graph path traversal
  • multi-tenancy module - gets the api of correct user and manages apps
  • social login - manages third-party auth service integration
  • http server - manages request and JWT request authentication

Installation

  • Install MongoDB and optionally RethinkDB

  • Install dependencies

    npm install
    
  • Run tests

    npm test
    
  • Create admin app

    npm run create-admin-app admin.localhost.reindexio.com
    
  • Create a test app (localhost)

    npm run create-app
    
  • Run server

    npm start
    
  • You can login into GraphiQL by passing the admin token in the token query string argument:

    http://localhost:5000/?token=<YOUR_TOKEN>