GithubHelp home page GithubHelp logo

impact-graph's Introduction

Impact Graph

ImpactQL is a GraphQL server, that enables rapid development of serverless impact project applications. It does this by taking care of the persistance of impact project data.

Installation Features Architecture Vision here

Installation

git clone [email protected]:topiahq/impact-graph.git
cd impact-graph
npm i
cp config/example.env config/development.env

Edit the config/development.env file in your favorite code editor and the environmental variables

Create a database (we recommend Postgres) on your computer or server, we currently support for for MySQL, MariaDB, Postgres, MongoDB and SQLite).

If you don't have redis installed do so, and then start it with:

redis-server /usr/local/etc/redis.conf

That's it

Features

Authentication

Start fast

We enable impact projects to use our installation securely and privately for free, reach out for more details

Own your own data

If this is more important you and your have the resources, deploy your own version of this

  • An open source solution that enables you to keep control of your data
  • Supports Bring Your Own Database (BYOD) and can be used with any database
  • Built-in support for MySQL, MariaDB, Postgres, MongoDB and SQLite
  • Works great with databases from popular hosting providers

Architecture

The aim is to give a single entry point into any persistance solution that you want to use for your data. The aim is for something like this: Impact Graph architecture

We have so far only implemented these databases - MySQL, MariaDB, Postgres, MongoDB and SQLite

Roadmap

The first usecase we are building is user registration and putting projects in the database

Authentication

Strategies

There are many strategies available for authentication

Email address and password

mutation RegisterUser {
  mutation {
    register(
      data: {
        email: "[email protected]"
        password: "thisisatestpassword"
        firstName: "Bob"
        lastName: "Barker"
      }
    ) {
      id
      email
    }
  }
}

mutation {
  login(email: "[email protected]", password: "thisisatestpassword") {
    token
    user {
      firstName
      lastName
      email
    }
  }
}

Ethereum wallet

mutation {
  loginWallet(walletAddress:"0xeC54C676E54c5e3e7F095D979eA13533b5dC2177", signature: "0x417f84a0d31abf872a8071da3e888a5708dfff76f4fcb9c07dde1a36a0e8241a6b8f3480a936efe661772cc6d8156504acec6789cc5246c363f0634b9ee956601b", email: "[email protected]") {
    token
    user {

      email
    }
  }
}

OAuth

  • Designed to work with any OAuth service, it supports OAuth 1.0, 1.0A and 2.0
  • Built-in support for many popular OAuth sign-in services

Supports both JSON Web Tokens (JWT)

  • Supports both JSON Web Tokens

Example queries

query GetProjects {
  projects {
    title
    id
    description
  }
}

query AppProject {
  mutation {
    addProject(
      project: {
        title: "Unicorn DAC"
        description: "The Unicorn DAC, a non-hierarchical decentralized governance experimentWhy are bosses necessary? They arent. Self-managed organizations exist all over the world, but there is no template for how a ..."
      }
    ) {
      title
      description
    }
  }
}

mutation RegisterUser {
  mutation {
    register(
      data: {
        email: "[email protected]"
        password: "thisisatestpassword"
        firstName: "Bob"
        lastName: "Barker"
      }
    ) {
      id
      email
    }
  }
}

mutation LoginWallet {
  mutation {
    loginWallet(
      walletAddress: "0x......................................0"
      signature: "0xaslkdjasldkfjs8afjoi3jo3urjfo3902094304832094230948p34023948203423094802384idfb"
      email: "[email protected]"
    ) {
      token
      user {
        email
      }
    }
  }
}

Logging:

Default loggin is done by Apollo Graph Manager To make use of it you need to use register and provide a key in APOLLO_KEY in your .env file.

impact-graph's People

Contributors

aminlatifi avatar camilotd avatar camilotdex avatar dependabot[bot] avatar dexmateo avatar geleeroyale avatar mateodaza avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.