mars-v2-frontend/README.md
zramsay b1c8f37f25
All checks were successful
Publish ApplicationRecord to Registry / cns_publish (push) Successful in 1m33s
trigger job
2024-03-05 12:11:49 -05:00

79 lines
3.1 KiB
Markdown

# Mars Protocol v2 Outpost Frontend
ci
![mars-banner-1200w](https://marsprotocol.io/banner.png)
## 1. Web App
This project is a [NextJS](https://nextjs.org/). React application.
The project utilises [React hooks](https://reactjs.org/docs/hooks-intro.html), functional components, [Zustand](https://github.com/pmndrs/zustand) for state management, and [useSWR](https://swr.vercel.app/) for general data fetching and management.
Styles are handled with [Tailwind](https://tailwindcss.com/).
Typescript is added and utilised (but optional if you want to create .jsx or .tsx files).
## 2. Deployment
Start web server
```bash
yarn && yarn dev
```
### 2.1 Custom node endpoints using Docker
We allow the use of environment variables to be passed to the Docker container to specify custom endpoints for the app. The variables are:
| Variable | Description | Default |
| ----------------- | ------------------------------------- | ---------------------------------------- |
| URL_OSMOSIS_REST | The Osmosis node REST endpoint to use | https://lcd-osmosis.blockapsis.com |
| URL_OSMOSIS_RPC | The Osmosis node RPC endpoint to use | https://rpc-osmosis.blockapsis.com |
| WALLET_CONNECT_ID | Your projects WalletConnect v2 ID | 0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x |
**Sample Docker run command**
This command will start the container in interactive mode with port 3000 bound to localhost and print logs to stdout.
```sh
docker run -it -p 3000:3000 \
-e URL_OSMOSIS_REST=https://lcd-osmosis.blockapsis.com \
-e URL_OSMOSIS_RPC=https://rpc-osmosis.blockapsis.com \
-e WALLET_CONNECT_ID=0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x marsprotocol/interface:latest
```
### 2.2 Custom node endpoints using non-Docker deployments
Copy `.env.example` to `.env` and modify the values to suit your needs.
#### 2.2.1 TradingView library
The Outpost UI has a [TradingView](https://www.tradingview.com/) implementation, to display charts for the listed assets.
**TradingView only works on non-docker deployments (e.g. via [vercel](https://vercel.com)). As the docker image already has a fallback installed and can not be updated on `docker run`**
If you are running the UI on a node based server, add the following environment variables to install TradingView.
```
CHARTING_LIBRARY_USERNAME=YOUR_GIT_USERNAME
CHARTING_LIBRARY_ACCESS_TOKEN=YOUR_TRADING_VIEW_ACCESS_TOKEN
CHARTING_LIBRARY_REPOSITORY=github.com/tradingview/charting_library/
```
_NOTE: You'll also need to have an active TradingView license to obtain those credentials_
## 4. Development practices
### 4.1 Data orchestration
Data is handled with a combination of container components, useSWR and a caching mechanism. API hooks are responsible for syncing the application state.
## 5. Contributing
We welcome and encourage contributions! Please create a pull request with as much information about the work you did and what your motivation/intention was.
## 6. License
Contents of this repository are open source under the [Mars Protocol Web Application License Agreement](./LICENSE).