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.
- 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
- Tech Stack
- System Prerequisites
- Getting Started
- Contract Deployments
- Starting the app
- Configuring ApiServer
- Configuring WebApp
- Configuring Blockchain
- Authors
- License
- Acknowledgments
This is built with our Full-Stack Boilerplate
- Database: MongoDb
- Api Server: NestJS
- Web App: React + Redux + Redux-Saga + Ethers.js
- NodeJS >= v10
- Yarn >= 1.0
- MongoDb instance
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
- Run
yarn
in the project root to install all dependancies
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.
- Go to project root
- Run
cd ApiServer
- Run
cp .env.example .env
- this is where you will configure all environment variables - 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)
- Go to project root
- Run
cd WebApp
- Run
cp .env.example .env
- Ensure the ApiServer details in the
API_HOST=
field are correct
- 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
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]);
- Configure environment variables in
.env
file (never commit to repo or expose secrets!) using.env.example
as an example - If deploying to Rinkeby, comment out
RINKEBY_PRIVATE_KEY
variable, and vice-versa - Run
yarn deploy:devnet
oryarn deploy:NETWORKNAME
to deploy contracts
Contract deployments on test nets are to use our internal test account
- https://etherscan.io/address/0x0f17d2198dbb9d7a50557284f7ee10dfa5e0628a
- https://goerli.etherscan.io/address/0x0f17d2198dbb9d7a50557284f7ee10dfa5e0628a
- https://rinkeby.etherscan.io/address/0x0f17d2198dbb9d7a50557284f7ee10dfa5e0628a
- https://kovan.etherscan.io/address/0x0f17d2198dbb9d7a50557284f7ee10dfa5e0628a
- https://ropsten.etherscan.io/address/0x0f17d2198dbb9d7a50557284f7ee10dfa5e0628a
The current contracts as of 29/05/2019 are deployed on Mainnet at the following address, with the following markets.
- Dai: 0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359
- Community Factory: 0xc5Af5f868eff2F7cC49d7BE5362C505bD5Bec06a
- Basic Linear Factory: 0x727Cb5dc8c3abF5044d2cE3239FF9a441551F9eF
- Basic Linear Factory V2:0xa86bA03C6A2858755423A5225C34464848e5E1C2
- Membership Mgr Fact: 0x08381500b1DeAfd200E5aBE046Fd7096c9Dc5Ba2
- Event Manager Factory: 0x47bCAeA99942eCbf5e4d0b0C82D8fec5854810b3
The current contracts as of 24/05/2019 are deployed on Goerli at the following address, with the following markets.
- PseudoDai: 0x47bCAeA99942eCbf5e4d0b0C82D8fec5854810b3 - Gas used 948421
- Community Factory: 0x9f36F9100F75A68BA66C02106A539c1dC72c97C1 - Gas used 1230352
- Basic Linear Factory: 0xa86bA03C6A2858755423A5225C34464848e5E1C2 - Gas used 1938111
- Basic Linear Factory V2:0xfF103Ea84d734761a7e4094D9d1396e42cD509e5 - Gas used 2016544
- Membership Mgr Fact: 0xF29e66aA67421a53B8d9cb14C9d6768907B7D47e - Gas used 2412319
- Event Manager Factory: 0x261871a421f8cAAa4686Df18aDe13b3406E4c9E2 - Gas used 3263815
The current contracts as of 06/06/2019 are deployed on Rinkeby at the following address, with the following markets.
- PseudoDai: 0xb5947cFD299a4bB5a749AA18A8D1a41353B52332 - Gas used 948421
- Community Factory: 0xb142f4d19c4CA99230990143896b0a32E31ed4C0 - Gas used 1230352
- Basic Linear Factory: 0x6e4451E154F740aa7386a8831DC73C072C948a8D - Gas used 1938111
- Basic Linear Factory V2:0xfe52BdE0E3Ff07fC48e071f968Df7944B308740E - Gas used 2016544
- Membership Mgr Fact: 0xbE24cC927f55D0645146052EC58c2b4cE8219239 - Gas used 2412319
- Event Manager Factory: 0x4b4daE72c251371530ce0CED2Ed8192b6caBcb85 - Gas used 3263815
The current contracts as of 06/06/2019 are deployed on Kovan at the following address, with the following markets.
- PseudoDai: 0x47bCAeA99942eCbf5e4d0b0C82D8fec5854810b3 - Gas used 948421
- Community Factory: 0x9f36F9100F75A68BA66C02106A539c1dC72c97C1 - Gas used 1230352
- Basic Linear Factory: 0xa86bA03C6A2858755423A5225C34464848e5E1C2 - Gas used 1938111
- Basic Linear Factory V2:0x50BD8788aEf9C9Ed3c1a6Fd0A31364A807Ec8D2a - Gas used 2016544
- Membership Mgr Fact: 0xF29e66aA67421a53B8d9cb14C9d6768907B7D47e - Gas used 2412319
- Event Manager Factory: 0x261871a421f8cAAa4686Df18aDe13b3406E4c9E2 - Gas used 3263815
The current contracts as of 06/06/2019 are deployed on Ropsten at the following address, with the following markets.
- PseudoDai: 0x3f05e5D250FE1A294c665E970513a36D7E2F3230 - Gas used 948421
- Community Factory: 0x253a8E67C88c95955CE1817aE2AF92c260Fad605 - Gas used 1230352
- Basic Linear Factory: 0xc6585F8e3E3e949f87170A8F024b2Ce9B1Cb3a42 - Gas used 1938111
- Basic Linear Factory V2:0x01593076fb093e8c36cFE3b3C08cF1280da9C88c - Gas used 2016544
- Membership Mgr Fact: 0x22Eecbe89f9b50Fa997D03562c62229127Cd65d4 - Gas used 2412319
- Event Manager Factory: 0xdE114425b6B4cA64C159cfb9aCEB2cb96195cDEA - Gas used 3263815
- Ryan Noble / RyRy79261: Initial work
- Michael Yankelev / panterazar: Framework/Implementation & support
- Benjamin Scholtz / BenSchZA: DevOps & Bonding curve algorithms
- Florian Bühringer / Capeflow: Product Lead & Bonding curve algorithms
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE file for details.
Andrew Tudhope Paul Kholhaas Devon Krantz