Toolkit for building apps that interact with Vega
Go to file
Bartłomiej Głownia d0452aeb81
Feature/303 orderbook improvements (#312)
* [#151] market-depth code cleanup

* [#303] Make ask and bid relative volume bars relative to maximum bid or ask volume

* [#151] align cmulative vol bars to left

* [#151] replace orderbook zoom in zoom out buttons with dropdown

* [#151] fill gaps in orderbook data

* Order book mocks added

* [#151] mark mid price in orderbook

* [303] Show number in orderbook cumulative volume column

* [#808] show indicative uncrossing volume instead of volume if market is in auction mode

* Method for asserting order book style

* [#303] Add test id attributes to orderbook cells

* Cleanup steps after merge

* Order book test passing

* Change method name

* Revert "[#151] fill gaps in orderbook data"

This reverts commit 90ea4e4ab3.

* [#303] Orderbook rows render optimization

* test: update feature with @todo tests

Same tests can be found in Notion

* [#303] Orderbook scroll to mid price

* [#303] orderbook scroll to row pixel perfect alignment

* [#303] Bring back best offer horizontal lines

* [#303] Preserve center price level on row number change, adjust indicativePrice to resoluton

* feat(orderbook): add storybook

Refs: #303

* feat(orderbook): fix no rows handling

Refs: #303

* feat(orderbook): add orderbook stories for auction and continous market

Refs: #303

* feat(orderbook): add stories for empty orderbook

Refs: #303

* feat(orderbook): fix footer position when there is no data

Refs: #303

* feat(orderbook): seperate number of rows for buy and sell in storybook

Refs: #303

* feat(orderbook): keep mid price in middle until user will scroll

Refs: #303

* feat(orderbook): style scrollbar

* feat(orderbook): style scrollbar

* feat(orderbook): adjust gaps

* feat(orderbook): adjust gaps

* test: addition for autofilled order and mid price lines

* fix: lint

* feat(orderbook): make it posiible to write RTL tests

* feat(orderbook): fix price focus, add unit tests

* feat(orderbook): fix price scroll to mid proce, add unit tests

* feat(orderbook): improvements

- fix scrollbar colors in firefox
- bring back resolution dropdown chevron
- hide go to mid button when locked on mid price
- right align ask vol bar
- change grid gap to 5px
- add vertical lines between columns
- display "No data" if theis no orderbook data
- align header labels to right

* feat(orderbook): fix formatting

* feat(orderbook): add 5px gap

* feat(orderbook): improvements after code review

* feat(orderbook): display full height vertical lines

* fix: change in mid position

* feat(orderbook): fix number cannot be converted to BigInt because it is not integer

* feat(orderbook): fix TS2307 in trading-e2e caused by .module.scss import

Co-authored-by: Joe <joe@vega.xyz>
2022-06-10 15:52:39 +02:00
.github Revert "ci: run on push" 2022-06-10 12:17:55 +01:00
.husky chore: add commit lint (#398) 2022-05-16 13:36:03 -04:00
.storybook Add storybook/addon-a11y 2022-03-07 13:57:06 -08:00
.vscode Feat/300 network parameters table (#333) 2022-05-04 18:15:54 +03:00
apps Feature/303 orderbook improvements (#312) 2022-06-10 15:52:39 +02:00
libs Feature/303 orderbook improvements (#312) 2022-06-10 15:52:39 +02:00
scripts Ci/generate tranches (#401) 2022-05-17 13:26:04 +01:00
tools Feat/427: Serve explicit environments (#433) 2022-05-23 10:56:11 +01:00
.editorconfig Normalize line endings (#207) 2022-04-06 11:59:51 +01:00
.eslintrc.json renaming test files (#351) 2022-05-12 13:32:14 +01:00
.gitattributes Normalize line endings (#207) 2022-04-06 11:59:51 +01:00
.gitignore Feat/427: Serve explicit environments (#433) 2022-05-23 10:56:11 +01:00
.nvmrc Add .nvmrc and engine, set node version to 16.14.0 2022-02-17 13:43:41 +01:00
.prettierignore Ci/generate tranches (#401) 2022-05-17 13:26:04 +01:00
.prettierrc Create a Mono-repo for DeFiUI + ui toolkit using nx 2022-02-11 15:02:11 +01:00
.sentryclirc Chore/sentry (#163) 2022-03-29 18:29:29 +01:00
babel.config.json Create a Mono-repo for DeFiUI + ui toolkit using nx 2022-02-11 15:02:11 +01:00
CODEOWNERS add code owners 2022-02-23 08:53:57 +00:00
commitlint.config.js chore: add commit lint (#398) 2022-05-16 13:36:03 -04:00
jest.config.js Create a Mono-repo for DeFiUI + ui toolkit using nx 2022-02-11 15:02:11 +01:00
jest.preset.js Create a Mono-repo for DeFiUI + ui toolkit using nx 2022-02-11 15:02:11 +01:00
LICENSE Create a Mono-repo for DeFiUI + ui toolkit using nx 2022-02-11 15:02:11 +01:00
migrations.json Fixes for workflows (#291) 2022-04-22 17:51:18 -07:00
netlify.toml Remove custom ignore (#221) 2022-04-07 12:24:04 +01:00
nx.json [#168] Add static app to host AlphaLyrae font 2022-03-31 09:11:29 +02:00
package.json Feature/303 orderbook improvements (#312) 2022-06-10 15:52:39 +02:00
README.md feat(#175): ui-toolkit links (#453) 2022-05-31 17:30:02 -07:00
tsconfig.base.json Feat/6 Network Switcher (#502) 2022-06-10 10:15:38 +01:00
workspace.json Feat/6 Network Switcher (#502) 2022-06-10 10:15:38 +01:00
yarn.lock Feature/303 orderbook improvements (#312) 2022-06-10 15:52:39 +02:00

Vega front-end monorepo

The front-end monorepo provides a toolkit for building apps that interact with Vega, as well as the apps themselves.

This repository is managed using Nx.

🔎 Applications in this repo

Block explorer

The Vega block explorer provides an interface that allows users to search for and see transactions, blocks, parties, assets, markets and more on the Vega chain.

Trading UI

The trading interface built based on a component toolkit. It will provide a way for participants to interact with markets and provide resources for others to build additional open-source user interfaces.

Token

The utlity dApp for interacting with the Vega token and using its' utility. This includes; delegation, nomination, governance and redemption of tokens.

Explorer

The block explorer for the Vega network, showing details of raw chain states and the state of markets on the Vega network.

Stats

An application for the status of the Vega network. Showing block height and other network activity.

Static

Hosting for static content being shared across apps, for example fonts.

🧱 Libraries in this repo

UI toolkit

The UI toolkit contains a set of components used to build interfaces that can interact with the Vega protocol, and follow the design style of the project. It contains a storybook that can be served with yarn nx run ui-toolkit:storybook.

Tailwind CSS config

The Tailwind CSS config contains theme that align default config with Vega design system.

Cypress

For shared Cypress logic, commands and steps.

Web3

A ulitity library for connecting to the Ethereum network and interacting with Vega Web3 contracts.

React Helpers

Generic react helpers that can be used across multilpe applications, along with other utilties.

💻 Develop

Set up

Check you have the correct version of Node. You can install NVM to switch between node versions. Then NVM install. Before you build you will need to yarn install in the root directory. The repository includes a number of template .env files for different networks. Copy from these to the .env file before serve to launch app with different network. You can serve any application with yarn nx run <name-of-app>:serve.

Build

Run nx build my-app to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Run nx serve my-app for a dev server. Navigate to the port specified in app/<project-name>/project.json. The app will automatically reload if you change any of the source files.

Using Apollo GraphQL and Generate Types

In order to generate the schemas for your GraphQL queries, you can run nx run types:generate. If it is the first time you are running the command, make sure you are setting up the environment variable from apollo.config.js.

export  NX_VEGA_URL=https://lb.testnet.vega.xyz/query
yarn nx run types:generate

Running tests

Run yarn nx run <my-app>-e2e:e2e to execute the e2e tests with cypress, or nx affected:e2e will execute just the end-to-end tests affected by a change. You can use the --watch flag to open the cypress tests UI in watch mode, see cypress executor for all CLI flags.

Run nx test my-app to execute the unit tests with Jest, or nx affected:test to execute just unit tests affected by a change. You can also use --watch with these test to run jest in watch mode, see Jest executor for all CLI flags.

Trading app E2E tests

To run tests locally using your own wallets you can add the following environment variables to cypress.json

  1. Change TRADING_TEST_VEGA_WALLET_NAME to your Vega wallet name
  2. Add TRADING_TEST_VEGA_WALLET_PASSPHRASE as your wallet passphrase
  3. Add ETH_WALLET_MNEMONIC as your Ethereum wallet mnemonic

Formatting

In CI linting, formatting and also run. These checks can be seen in the CI workflow file.

  • To fix linting errors locally run yarn nx lint --fix
  • To fix formatting errors local run yarn nx format:write
  • For either command you may use --all to run across the entire repository

Further help with Nx

Visit the Nx Documentation to learn more.

Vegacapsule

Explorer

Follow the following steps to start using a local network with the Vega Explorer:

  1. Prepare vegacapsule. Follow the Vegacapsule instructions
  2. Build the explorer frontend application
  3. Start the explorer frontend application with the .env.vegacapsule env file
  4. Go to http://localhost:3000 in your browser

If you simply want to run Explorer locally, without using a local network:

cd apps/explorer && cp .env.testnet .env.local
yarn nx run explorer:serve

📑 License

MIT