If you'd like to listen to a talk instead, you may be interested in checking out
@sohkai's
technical overview
For a gentler walkthrough,
@aquigorka
published an Aragon frontend walkthrough
The Aragon client (this repo, aragon/aragon
) is built as a secure shell that allows a user to create, launch, and manage a decentralized organization. It is meant to be the entry point for users into their decentralized organizations.
Similar to an operating system, users are able to install applications into their organizations, and these applications are securely lauched by the Aragon client in their own sandboxed environments.
In short, some important pieces of the architecture to know about:
- Organizations and their applications are built on top of the aragonOS smart contract framework
- Most organizations will be created through an Aragon Template, usually one from
aragon/dao-templates
- Most organizations will have the applications in
aragon/aragon-apps
installed by default - Each application is composed of a smart contract and a UI frontend, connected through aragonAPI
- On-chain state from Ethereum is reduced in the Aragon client through
@aragon/wrapper
, which acts as a Web3 middleware layer - Application sandboxing is provided through iframes and WebWorkers that are launched by the Aragon client
- Generic UI components are imported from aragonUI
Some more documentation about these particular areas are available in the Developer Portal:
If you find an issue, or would like to add a feature, ask yourself these following questions:
- Is it related to the smart contracts?
- Is it related to the sandboxed applications? If yes, make the changes in
aragon/aragon-apps
or your own app's repo. - Is it related to one of the onboarding templates? If yes, you'll want to see if it's a template from
aragon/dao-templates
. - Else, aragonOS is most likely the repo to look at.
- Is it related to the sandboxed applications? If yes, make the changes in
- Is it in one of the sandboxed applications (e.g. Voting, Tokens, or Finance from
aragon/aragon-apps
)?- Make the changes there!
- Is it a generic UI component?
- Would it mostly benefit Aragon-related developers? If yes, aragonUI is the best place.
- Else, add it into
aragon/aragon
👍.
- Is there something wrong with how the client or one of the apps is talking to Ethereum?
@aragon/wrapper
is likely the culprit.
- Is there something you'd like an app to do, but can't?
- More APIs likely need to be added to
@aragon/api
and@aragon/wrapper
.
- More APIs likely need to be added to
- Is a transaction description not being parsed correctly, or looking weird (e.g. from the Voting app)?
- It's likely either a problem with the app's radspec strings itself, or the radspec parser.
- Else
- ✅ This repo is probably the right one to work on! If you're still not sure, please file an issue and ask us!
Refer to the frontend development setup to set up everything you need to start local development on the Client or an app in aragon/aragon-apps
!
If you're developing your own app, the Developer Portal and the Your first Aragon app tutorial are the best places to start.
Afterwards, you may want to look over some of the existing apps' contracts in aragon/aragon-apps
, or browse through the work of other developers in the awesome-aragon list (such as Autark's Open Enterprise or Aragon Black's Fundraising).