Git Product home page Git Product logo

committees's Introduction

Committees

Committees is an Aragon application designed to delegate certain DAO operations on a subgroup of members in order to speed them up. Each committee is created by deploying a token, token manager and voting. The Committee app allows assigning an initial group members, some voting parameters (approve percentage, quorum, etc.), and some token parameters (uniqueness, transferability, etc.).

๐Ÿฒ Project Stage: Rinkeby

The Committees app has been published to open.aragonpm.eth on the Rinkeby test network. If you experience any issues or are interested in contributing please see review our open issues.

๐Ÿšจ Security Review Status: pre-audit

The code in this repository has not been audited.

How to try Committees immediately

We have a Committees demo DAO live on Rinkeby!

How to run Committees locally

First make sure that you have node, npm, and the Aragon CLI installed and working. Instructions on how to set that up can be found here. You'll also need to have Metamask or some kind of web wallet enabled to sign transactions in the browser.

Git clone this repo.

git clone https://github.com/P2PModels/committees.git

Navigate into the committees directory.

cd committees

Install npm dependencies.

npm i

Deploy a dao with Committees installed on your local environment.

npm run start:ipfs:template

If everything is working correctly, your new DAO will be deployed and your browser will open http://localhost:3000/#/YOUR-DAO-ADDRESS. It should look something like this:

newly deployed dao with Committees

You will also see the configuration for your local deployment in the terminal. It should look something like this:

    Ethereum Node: ws://localhost:8545
    ENS registry: 0x5f6f7e8cc7346a11ca2def8f827b7a0b612c56a1
    APM registry: aragonpm.eth
    DAO address: YOUR-DAO-ADDRESS

How to deploy Committees to an organization

Committees has been published to APM on rinkeby at committees.open.aragonpm.eth

To deploy to an organization you can use the Aragon CLI.

aragon dao install <dao-address> committees.open.aragonpm.eth --app-init-args <minimetoken-factory> <ens-registry> <initial-manager> --environment aragon:<network>
Contract in Network <minimetoken-factory> <ens-registry>
Rinkeby 0xad991658443c56b3dE2D7d7f5d8C68F339aEef29 0x98df287b6c145399aaa709692c8d308357bc085d
Mainnet 0xA29EF584c389c67178aE9152aC9C543f9156E2B3 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e

The <initial-manager> can be set to the DAO's general voting app, and <network> can be local, rinkeby, or mainnet.

Assign committee CREATE_PERMISSIONS_ROLE and MANAGE_MEMBERS_ROLE to DAO's voting app:

aragon dao acl create <dao> <committees> CREATE_COMMITTEE_ROLE <voting> <voting> --environment aragon:<network>
aragon dao acl create <dao> <committees> MANAGE_MEMBERS_ROLE <voting> <voting> --environment aragon:<network>

The Committees app must have the APP_MANAGER_ROLE permission on Kernel and the CREATE_PERMISSIONS_ROLE permission on the ACL. It can be set up from the Permissions native app, or through the CLI.

aragon dao acl create <dao> <dao> APP_MANAGER_ROLE <committees> <voting> --environment aragon:<network>
aragon dao acl create <dao> <acl> CREATE_PERMISSIONS_ROLE <committees> <voting> --environment aragon:<network>

Structure

This boilerplate has the following structure:

root
โ”œโ”€โ”€ app
โ”œ โ”œโ”€โ”€ src
โ”œ โ””โ”€โ”€ package.json
โ”œโ”€โ”€ contracts
โ”œ โ”œโ”€โ”€ CommitteeManager.sol
โ”œ โ””โ”€โ”€ Template.sol
โ”œโ”€โ”€ migration
โ”œโ”€โ”€ test
โ”œโ”€โ”€ arapp.json
โ”œโ”€โ”€ manifest.json
โ”œโ”€โ”€ truffle.js
โ””โ”€โ”€ package.json
  • app: Frontend folder. Completely encapsulated, has its own package.json and dependencies.
    • src: Source files.
    • package.json: Frontend npm configuration file.
  • contracts: Smart Contracts folder.
    • CommitteeManager.sol: Aragon app contract.
    • CommitteeHelper.sol: Helpers to install and configure Aragon apps on a DAO.
    • Template.sol: Aragon Template to deploy a fully functional DAO.
  • migrations: Migrations folder.
  • test: Tests folder.
  • arapp.json: Aragon configuration file. Includes Aragon-specific metadata for your app.
  • manifest.json: Aragon configuration file. Includes web-specific configurations.
  • truffle.js: Truffle configuration file.
  • package.json: Main npm configuration file.

committees's People

Contributors

pjcolombo avatar sembrestels avatar

Watchers

James Cloos 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.