Vortex is a gateway for cross-border payments. It is built on top of the Pendulum blockchain.
This is a Bun monorepo containing multiple sub-projects organized into apps and packages:
- apps/api - Backend API service providing signature services, on/off-ramping flows, quote generation, and transaction state management
- apps/frontend - React-based web application built with Vite for the Vortex user interface
- apps/rebalancer - Service for automated liquidity rebalancing across chains
- packages/sdk - Stateless SDK that abstracts Vortex's API and ephemeral key handling for cross-chain ramp operations
- packages/shared - Shared utilities and types used across the monorepo
In the project root directory, install all dependencies:
bun installIf you encounter issues with the bun install command, you can try upgrading your bun version with bun upgrade. The installation is confirmed to work in bun v1.3.1.
Run the frontend, backend API, and shared package concurrently in development mode:
bun devThis will start:
- Frontend: http://127.0.0.1:5173/
- Backend API: http://localhost:3000
Frontend only:
bun dev:frontendBackend API only:
bun dev:backendRebalancer:
bun dev:rebalancerBuild all projects:
bun buildBuild individual projects:
# Build frontend
bun build:frontend
# Build backend API
bun build:backend
# Build SDK
bun build:sdk
# Build shared package
bun build:sharedThe React-based web application for Vortex.
Development:
cd apps/frontend
bun devBuild:
cd apps/frontend
bun buildPreview production build:
cd apps/frontend
bun previewThe backend service providing signature services, on/off-ramping flows, and transaction management.
Development:
cd apps/api
bun devDatabase setup:
cd apps/api
# Copy environment variables
cp .env.example .env
# Edit .env with your database credentials
# Run migrations
bun migrate
# Seed phase metadata
bun seed:phase-metadataBuild and serve:
cd apps/api
bun startSee apps/api/README.md for detailed API documentation.
Service for automated liquidity rebalancing across chains.
Setup:
cd apps/rebalancer
cp .env.example .env
# Edit .env with your API keysRun:
cd apps/rebalancer
bun startSee apps/rebalancer/README.md for more details.
A stateless SDK that abstracts Vortex's API and ephemeral key handling.
Build:
cd packages/sdk
bun buildSee packages/sdk/README.md for usage examples and API documentation.
Common utilities and types used across the monorepo.
Build:
cd packages/shared
bun buildVITE_SIGNING_SERVICE_PATH: Optional variable to point to a specific signing backend service URL. If undefined, it will default to either:http://localhost:3000(if in development mode)/api/production(if in production mode)- this will use the
_redirectsfile to direct Netlify to proxy all requests to/api/productiontohttps://signer-service.pendulumchain.tech
- this will use the
/api/staging(if in staging mode)- this will use the
_redirectsfile to direct Netlify to proxy all requests to/api/stagingtohttps://signer-service-staging.pendulumchain.tech
- this will use the
VITE_ALCHEMY_API_KEY: Optional variable to set the Alchemy API key for the custom RPC provider. If undefined, it will use the default endpoint.
If you encounter issues with the IDE not detecting the type overwrites of the @pendulum-chain/types package properly,
make sure that all the @polkadot/xxx packages match the same version used in the types package. It is also important
to make sure that peer dependencies have the same version as this might also cause issues.