Metavault Options UI is a React and TypeScript decentralized application that demonstrates an options vault interface with EVM and Solana wallet connectivity. It showcases option discovery, vault overviews, and deposit/withdraw flows, built with a modern component system, Tailwind CSS, and Storybook.
Use this repository as a reference UI for integrating wallets (MetaMask, WalletConnect, Coinbase Wallet, Solana wallet adapter), routing, code-splitting, and a clean component architecture for Web3 options products.
- Options discovery page with token symbols, APY, TVL, deposits, epoch and version metadata
- Option detail page with general info plus deposit/withdraw panel
- EVM wallet support via
web3-react(MetaMask, WalletConnect, Coinbase Wallet, Network) - Solana wallet support via
@solana/wallet-adapter - Component-driven development with Storybook and Tailwind CSS
- Lazy-loaded route-based code splitting for faster initial loads
- create-react-app (v5.0.0)
- TypeScript (v^4.6.3)
@solana/wallet-adapter@web3-react/*(beta)ethers.js- ESLint (
eslint-config-google),husky,lint-staged,@commitlint tailwindcss,@headlessui/react,@tailwindcss/formsstorybook,reach-ui,react-table,react-use
src/App.tsx: sets up routes and lazy loadingsrc/pages/Options: options discovery grid and overview cardssrc/pages/Option: option details and deposit/withdraw panelsrc/contexts/evm-wallet-context.tsx: EVM wallet provider with multiple connectorssrc/partsandsrc/components: reusable UI, panels, inputs, modals, and badges
yarn install
# development
yarn start
# production build
yarn buildEnsure Node.js and Yarn are installed. The app is built with CRA v5 and TypeScript.
Routes are defined in src/App.tsx using React Router 6 and are lazy-loaded:
/options: options discovery/option/:optionType/:token: option detail/web3/evm-connection: EVM wallet demos/web3/solana-connection: Solana wallet demos
- EVM wallets via
web3-react: MetaMask, WalletConnect, Coinbase Wallet, and Network connectors are pre-wired inEVMWalletProvider. - Solana wallets via
@solana/wallet-adapterwith example flows and providers included insrc/contextsand example pages.
- Linting: ESLint (Google config) with commit hooks via Husky and lint-staged.
- Styling: Tailwind CSS and Headless UI for accessible primitives and form styles.
- Components: Storybook stories for visual testing in
src/storiesand component folders. - Tables:
react-tableis used; consider upgrading to v8 with full TypeScript types.
- Some type issues are temporarily suppressed with
@ts-expect-error; replace with proper types. - Investigate Solana Web3 Program constructor parameter expectations.
- Persist generated keypairs if cross-client state is desired (see https://gist.github.com/dabit3/7cbd18b8bc4b495c4831f8674902eb42).
- React 18 upgrade: switch from
ReactDOM.rendertocreateRoot(see warning in console). - Upgrade
react-tableto v8 and fix types insrc/components/Select.
@solana/wallet-adapterand starter example- Full-stack Solana guide (React, Anchor, Rust, Phantom)
web3-reactexample-next reference
Metavault options UI, on-chain options vault, DeFi options dApp, React Web3 options, EVM wallet connect MetaMask WalletConnect Coinbase, Solana wallet adapter React, TypeScript DeFi UI, Tailwind CSS Web3 frontend, options APY TVL deposits epoch, decentralized options interface, ethers.js web3-react example, Storybook DeFi components.
This repository is provided as an example UI; apply an appropriate license if publishing publicly.