This monorepo contains the following apps:
- Agent: Hold assets and perform actions from Aragon organizations.
- Agreement: Govern organizations through a subjective rules.
- Finance: Send payments and manage expenses with budgeting.
- Tokens: Manages an organization's token supply and distribution.
- Vault: Securely owns and manages tokens on behalf of a DAO.
- Voting: Create votes that execute actions on behalf of token holders.
- Disputable Voting: Create disputable votes that execute actions on behalf of token holders.
- Open Enterprise Apps:
- Allocations: Create proposals for financial allocation.
- Address books: Map Ethereum address to human-readable names.
- Projects: Allocate funding to Github issues.
- Dot Voting: Cast votes for Allocation or Issue Curation proposals.
- Rewards: Distribute payments to token holders.
- Standard Bounties: Issue bounties for tasks.
Each of the individual apps come with a frontend that is intended to be installed and used through the Aragon client.
You can read more about how each of the individual apps work in the Aragon user guide.
aragon-apps
uses yarn workspaces
and lerna
to manage its individual app workspaces.
To bootstrap, run:
yarn
This will initialize and install each of the individual apps, hoisting their shared dependencies into the root node_modules/
directory.
π‘ If you're only interested in bootstrapping one package, you can go to that specific package workspace and use
yarn install --focus
Running tests on all apps can be done by running yarn test
at the root directory (note that this can take a significant amount of time!).
Running tests of an individual app can be done by running yarn test
inside an individual app's directory, or through the selective yarn test:<app>
scripts.
By default, tests are run on an in-memory instance of testrpc.
Each app's frontend is encapsulated inside of that app's own app/
directory.
To work on frontend, you'll need to go into app/
directory and do another yarn
installation. For more instructions, you can follow the "Frontend Setup" guide in the Aragon client. Note that the app itself doesn't need to be bootstrapped if you'd just like to install the frontend.
For example:
# Starting at this project's root
# Go to the Voting app's directory
cd apps/voting
# Go to the Voting app's frontend directory
cd app/
# Install and start
yarn
yarn start
For some introductory information on what an Aragon app is, and how to build one, please read through the Aragon stack introduction and Your first Aragon app. To build Aragon client-compatible apps, the aragonAPI documentation is also available as a reference.
π Get started contributing with a good first issue.
Don't be shy to contribute even the smallest tweak. π² There are still some dragons to be aware of, but we'll be here to help you get started!
For more details about contributing to Aragon, please check the contributing guide.
If you come across an issue with Aragon, do a search in the Issues tab of this repo and the Aragon client's issues to make sure it hasn't been reported before. Follow these steps to help us prevent duplicate issues and unnecessary notifications going to the many people watching this repo:
- If the issue you found has been reported and is still open, and the details match your issue, give a "thumbs up" to the relevant posts in the issue thread to signal that you have the same issue. No further action is required on your part.
- If the issue you found has been reported and is still open, but the issue is missing some details, you can add a comment to the issue thread describing the additional details.
- If the issue you found has been reported but has been closed, you can comment on the closed issue thread and ask to have the issue reopened because you are still experiencing the issue. Alternatively, you can open a new issue, reference the closed issue by number or link, and state that you are still experiencing the issue. Provide any additional details in your post so we can better understand the issue and how to fix it.
For help and support, feel free to contact us at any time on our Discord.