Skip to content

DAO DAO UI architecture

elsehow edited this page Aug 30, 2022 · 6 revisions

The DAO DAO UI is a monorepo, meaning that the UI is composed of independent projects that cohabitate in a single, shared repository.

/apps

The /apps projects stitches together all of the other packages in our repo. To produce a coherent user experience.

  • apps/dapp. This is the main multi-DAO web app hosted at https://daodao.zone.
  • single-dao-dapp. This is a dapp for DAOs who want to self-host their page (e.g., rawdao.zone).

/packages/ui

This package provides stateless presentation components, which we design using Storybook.

/packages/utils

This package provides reusable functions.

/packages/state

This packages manages the DAO DAO app's state.

/packages/i18n

i18n handles internationalization for the DAO DAO UI. That includes natural-language translations as well as numbers, dates, and times.

A translation guide can be found in the package's README.

/packages/actions

This package describes the Actions that are available to select at proposal creation time in the DAO DAO UI.

/packages/proposal-module-adapter

This package allows the DAO DAO UI to support various proposal modules through its visual interface.

/packages/voting-module-adapter

This package allows the DAO DAO UI to support various voting modules through its visual interface.

/packages/common

This package provides stateful ui package components with state derived from the state package, shared between multiple apps in /apps.

/packages/tsconfig

This package provides reusable tsconfig files for all of our packages, and has no dependencies. (This package was provided by turborepo example and modified to our existing config.)

/packages/config

This package provides linting & formatting configuration for our packages, and has no dependencies. We can also add jest unit test config here for reuse across our packages. (This package was provided by turborepo example and modified to our existing config.)