Carrot is a web3 protocol trying to make incentivization easier and more capital efficient.
A monorepo for (most of) Carrot v1 frontend packages. All the packages are
written in Typescript and managed through yarn
workspaces and turborepo
.
The monorepo contains the following packages under the packages
folder:
@carrot-kpi/host-frontend
: the official implementation of the Carrot host frontend, presenting the various registered template frontends in a cohesive way. Implemented using Typescript and React.@carrot-kpi/react
: utility library making it easier to interact with Carrot from a React application. It mainly exports utility hooks and components that make it easier to work with (mainly render) templates. The library is obviously meant to be used with React only as a frontend tech.@carrot-kpi/sdk
: A general purpose SDK meant to make working with Carrot (from both the browser and Node) easier. It mainly exports classes representing the main Carrot entities (templates, KPI tokens, oracles etc etc) as well as a few utility functions and aFetcher
class to fetch data from the underlying protocol.@carrot-kpi/subgraph
: The official implementation of the Carrot KPI subgraph. Carrot is built to work even without a subgraph, but in order to make the experience snappier, a subgraph implementation is provided too.@carrot-kpi/ui
: a React implementation of the Carrot design system. Built with Typescript and documented with Storybook. The library is used extensively in the frontend to implement the various UI components.@carrot-kpi/shared-state
: an utility library that implements a shared state store with Redux to be shared between the host frontend and the various templates running on Carrot.@carrot-kpi/eslint-config-custom
: a custom ESLint configuration that exports ESlint configs for all the other packages. The per-project ESLint configs are adapted started from a base configuration with sane defaults to enforce consistency in the codebase.@carrot-kpi/tsconfig
: this package has the exact same concept and goal as theeslint-config-custom
one, but applied to Typescript configuration.
In order to get started just clone the repo and run yarn install
.
More information on how to contribute will be added in a future
CONTRIBUTING.md
file