mars-interface/README.md

58 lines
2.4 KiB
Markdown
Raw Normal View History

2023-01-31 15:46:56 +00:00
# Mars Protocol Osmosis Outpost Frontend
2022-04-29 21:45:14 +00:00
2023-01-31 15:46:56 +00:00
![mars-banner-1200w](https://marsprotocol.io/banner.png)
2022-04-29 21:45:14 +00:00
2023-02-03 19:30:14 +00:00
## 1. Web App
2022-04-29 21:45:14 +00:00
2023-01-31 15:46:56 +00:00
This project is a [NextJS](https://nextjs.org/). React application.
2022-04-29 21:45:14 +00:00
2023-02-03 19:30:14 +00:00
The project utilises [React hooks](https://reactjs.org/docs/hooks-intro.html), functional components, [Zustand](https://github.com/pmndrs/zustand) for state management, and [useQuery](https://github.com/TanStack/query) for general data fetching and management.
2022-04-29 21:45:14 +00:00
2023-01-31 15:46:56 +00:00
Typescript is added and utilised (but optional if you want to create .jsx or .tsx files).
2022-04-29 21:45:14 +00:00
2023-01-31 15:46:56 +00:00
SCSS with [CSS modules](https://create-react-app.dev/docs/adding-a-css-modules-stylesheet) (webpack allows importing css files into javascript, use the CSS module technique to avoid className clashes).
2022-04-29 21:45:14 +00:00
2023-02-03 19:30:14 +00:00
## 2. Deployment
2022-04-29 21:45:14 +00:00
2023-01-31 15:46:56 +00:00
Start web server
2022-04-29 21:45:14 +00:00
2023-01-31 15:46:56 +00:00
```bash
yarn && yarn dev
```
2022-04-29 21:45:14 +00:00
2023-02-03 19:30:14 +00:00
## 3. Text and translations
2022-04-29 21:45:14 +00:00
2023-02-03 19:30:14 +00:00
This repository makes use of a [translation repository](https://github.com/mars-protocol/translations). This repository containes all of the translation key values that are used within the UI. The rationale is to have no _hardcoded_ display string values in this repository.
## 4. Development practices
2023-01-31 15:46:56 +00:00
2023-02-03 19:30:14 +00:00
### 4.1 Imports
2023-01-31 15:46:56 +00:00
Local components are imported via index files, which can be automatically generated with `yarn index`. This command targets index.ts files with a specific pattern in order to automate component exports. This results in clean imports throughout the pages:
```
2023-02-03 19:30:14 +00:00
import { Button, Card, Title } from 'components/common'
2023-01-31 15:46:56 +00:00
```
or
```
import { Breakdown, RepayInput } from 'components/fields'
```
In order for this to work, components are place in a folder with UpperCamelCase with the respective Component.tsx file. The component cannot be exported at default, so rather export the `const` instead.
2023-02-03 19:30:14 +00:00
### 4.2 Data orchestration
Data is handled with a combination of container components, useQuery and Zustand. Container components are responsible for syncing the application state with the wallet-provider state. This fire of the required queries in useQuery, which are for many cases also stored in Zustand.
We aim to have as much as possible available in Zustand, to have one source of truth.
## 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
2023-01-31 15:46:56 +00:00
Contents of this repository are open source under the [Mars Protocol Web Application License Agreement](./LICENSE).