Web portfolio and activity UI at wallet.zuniawallet.com.
Next.js App Router dashboard. Non-custodial: keys stay in the Zunia or Keplr extension or the mobile app. The browser never talks to chain RPC directly — reads go through app/api/* → INDEXER_URL / BACKEND_URL.
/, /portfolio, /chains/[chainId], /staking, /activity, /governance, /missions, /dapps, /notifications, /settings
Connect modes: Zunia (window.zunia), Keplr (window.keplr), WalletConnect stub.
Also: Web Push (public/sw.js + VAPID UI), PWA manifest, iOS Home Screen prompt, ADR-36 device binding stubs under /api/device/*.
pnpm install
cp .env.example .env.local # set INDEXER_URL / BACKEND_URL / VAPID / WC
pnpm devOpen http://localhost:3000.
Apache-2.0.