my613-api

0.1.0 • Public • Published

my613-api

my613-api is a multi-tenant, hosted GraphQL database solution 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, my613-api provides Social Login with 5 providers (Auth0, Facebook, Google, Twitter and Github).

Functionality of my613-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.

my613-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.planeight.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>
    

Readme

Keywords

none

Package Sidebar

Install

npm i my613-api

Weekly Downloads

2

Version

0.1.0

License

MIT

Unpacked Size

6.81 MB

Total Files

191

Last publish

Collaborators

  • plan8