Skip to content

CryptosDAO/solana-orderbook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solana Orderbook

Whitelabel OpenBook V2 orderbook — polls an on-chain market, serves live bids/asks/trades via WebSocket, and displays them in a branded Next.js UI.

packages/
  server/    — Solana indexer + WebSocket/REST API (Node.js / TypeScript)
  frontend/  — Live orderbook UI (Next.js 14 / Tailwind CSS)

Quick start

1. Find an OpenBook V2 market address

Browse markets at https://app.openbook-solana.com and copy the market address you want to mirror (e.g. a SOL/USDC market).

2. Configure

cp .env.example .env

Edit .env:

RPC_URL=https://api.mainnet-beta.solana.com   # use a private RPC in prod
MARKET_ADDRESS=<paste OpenBook V2 market address here>
BASE_SYMBOL=SOL
QUOTE_SYMBOL=USDC

Recommended RPC providers (free tiers available):

3. Install & run (development)

npm install
npm run dev

Production (Docker)

# Edit docker-compose.yml and set your server's public IP/domain
docker compose up -d --build

Production (manual / PM2)

# Build
npm run build

# Start both processes
npx pm2 start packages/server/dist/index.js --name ob-server
npx pm2 start "npm run start --workspace=packages/frontend" --name ob-frontend
npx pm2 save

Architecture

Solana RPC
    │  (poll every 500ms)
    ▼
packages/server/src/indexer.ts   — deserializes OpenBook V2 bids/asks accounts
    │
    ▼
packages/server/src/store.ts     — in-memory orderbook state + trade history
    │
    ▼
packages/server/src/server.ts    — Express REST + WebSocket server
    │  (ws://…)
    ▼
packages/frontend                — React UI, reconnects automatically

WebSocket messages

type payload when
snapshot { orderbook, trades, market } on connect
ob_update { orderbook } every poll that changes the book
trade { trade } when mid-price shifts (fill detected)

Branding

  • Colors: edit packages/frontend/tailwind.config.js (bid, ask, surface)
  • Market name: set NEXT_PUBLIC_MARKET_NAME in .env
  • Logo / fonts: edit packages/frontend/src/app/layout.tsx

Environment variables

Variable Default Description
RPC_URL mainnet-beta public Solana RPC endpoint
MARKET_ADDRESS required OpenBook V2 market pubkey
BASE_SYMBOL BASE Base token label
QUOTE_SYMBOL QUOTE Quote token label
PORT 3001 API server port
POLL_INTERVAL_MS 500 Polling frequency (≥ 400ms)
ORDERBOOK_DEPTH 20 Price levels shown
NEXT_PUBLIC_WS_URL ws://localhost:3001 WebSocket URL (frontend)
NEXT_PUBLIC_API_URL http://localhost:3001 REST URL (frontend)
NEXT_PUBLIC_MARKET_NAME SOL/USDC Browser tab / header label

About

Whitelabel OpenBook V2 orderbook — live bids/asks feed via WebSocket + Next.js UI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages