Frontend React app for Osmosis AMM.
To run or build the app, first, need to install Node.js and Yarn globally;
First Install Node from https://nodejs.org/;
Then install Yarn;
npm install -g yarn
# OR
sudo npm install -g yarnFirst clone the repo;
git clone https://github.com/osmosis-labs/osmosis-frontend.git && cd osmosis-frontendThen install project dependencies;
yarnTo build the static assets;
yarn buildThis should produce prod folder with static assets.
Currently, Osmosis frontend app is SPA with entry point: prod/index.html
To spin up the local dev server;
yarn devThe app should be live at http://localhost:8080
This work is dual-licensed under Apache 2.0 and MIT. You can choose between one of them if you use this work.
SPDX-License-Identifier: Apache-2.0 OR MIT
If you want to build off of Osmosis, here are a few key components to check out!
Osmosis' key backend functions are maintained through modules, located under the "x" folder of https://github.com/osmosis-labs/osmosis. Each module manages distinct states but can call on each other's functions. To know more specifics about each module and how they work on Osmosis mainnet, check out https://docs.osmosis.zone/developing/modules/#module-accounts.
Handles the listing of various CW20 assets, all pools, and each of the pools' various metadata (chainStore, accountStore, poolId, etc.). The "Assets" folder handles all things related to the assets page, and the "Pools" folder handles all things related to the pools. Governance redirects to a separate staking UI on the keplr wallet. "Main" is responsible for the primary landing page where you can swap tokens.
Contains tools for connecting account (ConnectAccountButton) and for token swapping / token pair selecting. Pool detail pages, liquidity mining logic, and the superfluid staking UI on bonded LP tokens are also contained here.
Osmosis' hooks currently provide max gas-fees settings solutions (FakeFeeConfig), account connection/disconnection logic(BasicAmountConfig / useAccountCreation), and pool financial data(usePoolFinancialData).
Root.ts handles logic relating to trade routing and token pricing. If a token does not have a Coingecko price feed, the price gets derived from its relevant price to Osmo.
Dialogs contains components for joining and creating new pools. For a more detailed documentation on the general pool creation UI, check out https://github.com/osmosis-labs/awesome/blob/main/guides/token-listing.md. Specifically, manage-liquidity.tsx calculates share outputs given token inputs, with the following formula:
- tokenInAmount = number of tokens of coin A
- poolAsset.amount = total number of tokens of coin A in pool
- totalShare = total gamm shares of pool (with exponent = 18)
- shareOutAmount = tokenInAmount * totalShare / poolAsset.amount
The assets folder contains all graphical assets being currently used for frontend.
Config contains various boolean values to hide certain buttons or to promote certain existing / in production pools. It is also the place where external incentive gauges can be added to the Osmosis frontend. Each epoch for reward ditribution is defined here: a day. The channel info for each IBC asset is also handled here.
