BenSchZA / protea-gather

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Protea Gather Beta

Protea Gather is a dapp built on the Protea [x] protocol. Protea Gather provides an ecosystem that visualises social capital, encourages sustainable engagement & rewards commitment for meetup communities of all kinds.

Design Goals

  • Create a radically open and modular codebase, that can easily be amended by anyone
  • Give back to the developer community & advance shared understanding of how to build better products Product Goals
  • Create sustainable funding mechanisms for meetup communities
  • Visualise social capital in meetup communities, thereby amplifying their voice
  • Reward sustainable meetup engagement with token incentives
  • Create a framework that fosters meaningful human connections

Table Of Contents

Tech stack

This is built with our Full-Stack Boilerplate

  • Database: MongoDb
  • Api Server: NestJS
  • Web App: React + Redux + Redux-Saga + Ethers.js

System prerequisites

  • NodeJS >= v10
  • Yarn >= 1.0
  • MongoDb instance

Getting Started

The stack is configured as a monorepo. After configuring the various components & environment variables, the project can be spun up from the root.

Clone the repo

  1. Clone the repo
  2. Run yarn in the project root to install all dependancies

Starting Application

After configuring the ApiServer, WebApp, and Blockchain following the steps below, run yarn start:dev from the root to spin up all the necessary components.

Configuring ApiServer

  1. Go to project root
  2. Run cd ApiServer
  3. Run cp .env.example .env - this is where you will configure all environment variables
  4. Input your MongoDb server details in the MONGO-HOST= field (this will be localhost if you are running mongo locally or in a docker container with host networking)

Configuring WebApp

  1. Go to project root
  2. Run cd WebApp
  3. Run cp .env.example .env
  4. Ensure the ApiServer details in the API_HOST= field are correct

Configuring Blockchain

Dependencies

  • solc@0.5.4
  • etherlime@0.9.18

Running tests

  • First install the required packages with yarn install
  • (Assuming you have docker installed) Run yarn start:devnets which will start the docker container
  • To run the tests, execute yarn test

Etherlime Devnet Deployer

A number of changes have been made to Etherlime, and submitted in a PR, in order to interface with Ganache alternatives. We are using these changes to run our tests as can be seen in the package.json: "etherlime": "BenSchZA/etherlime#temp-feature",.

A new Etherlime deployer class has been created, with an alternative set of test accounts pre-configured:

  • Ganache accounts global variable: accounts

  • Devnet accounts global variable: devnetAccounts

  • Ganache deployer: deployer = await new etherlime.EtherlimeGanacheDeployer(NodeSigner.secretKey);

  • Devnet deployer: deployer = new etherlime.EtherlimeDevnetDeployer(NodeSigner.secretKey);

  • Ganache ContractAt: basicLinearMarketInstance = await etherlime.ContractAt(BasicLinearMarket, marketAddress[0]);

  • Devnet ContractAtDevnet: basicLinearMarketInstance = await etherlime.ContractAtDevnet(BasicLinearMarket, marketAddress[0]);

Deploying contracts to network (local/Rinkeby)

  1. Configure environment variables in .env file (never commit to repo or expose secrets!) using .env.example as an example
  2. If deploying to Rinkeby, comment out RINKEBY_PRIVATE_KEY variable, and vice-versa
  3. Run yarn deploy:devnet or yarn deploy:NETWORKNAME to deploy contracts

Contract Deployments

Contract deployments on test nets are to use our internal test account

Mainnet

The current contracts as of 29/05/2019 are deployed on Mainnet at the following address, with the following markets.

yarn deploy:mainnet

Goerli

The current contracts as of 24/05/2019 are deployed on Goerli at the following address, with the following markets.

yarn deploy:goerli

Rinkeby

The current contracts as of 06/06/2019 are deployed on Rinkeby at the following address, with the following markets.

yarn deploy:rinkeby

Kovan

The current contracts as of 06/06/2019 are deployed on Kovan at the following address, with the following markets.

yarn deploy:kovan

Ropsten

The current contracts as of 06/06/2019 are deployed on Ropsten at the following address, with the following markets.

yarn deploy:ropsten

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Andrew Tudhope Paul Kholhaas Devon Krantz

About

License:MIT License


Languages

Language:TypeScript 56.4%Language:JavaScript 40.4%Language:HTML 2.1%Language:CSS 0.6%Language:Shell 0.3%Language:Dockerfile 0.2%