Skip to content

Latest commit

 

History

History
60 lines (43 loc) · 4.99 KB

ARCHITECTURE.md

File metadata and controls

60 lines (43 loc) · 4.99 KB

Architecture Guide for the Aragon Client

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

Overview

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:

Finding the right repository to contribute to

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 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?
  • Is there something you'd like an app to do, but can't?
  • 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!

Starting frontend development

Refer to the frontend development setup to set up everything you need to start local development on the Client or an app in aragon-app!

Your own Aragon app

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).