Vanna_Finance_Backend monorepo at apps/stellar (package @vanna/stellar-app). It is a Next.js application with both the frontend screens and their server API routes. Header, sign-in dialog, funds modal and mascot come from the shared workspace package packages/shared, which the Solana app also uses. The live testnet build is at test.vanna.finance.
Screens
There is no Pro/Lite mode in the current app. A visible pool row is not proof of an enabled controller route: the Aquarius config also has an XLM/USDT pool, which Farm hides (
HIDDEN_POOL_IDS); the lending markets remain the four documented assets.
Wallets and state
The Sign in to Vanna dialog (packages/shared/v4/connect-modal.tsx) offers:
lib/wallet-adapter.ts gives every call site the same getAddress / requestAccess / signTransaction shape for Freighter, OneKey and Dynamic. It still contains a Privy raw-hash signing path, but the current sign-in dialog does not offer Privy.
Zustand stores hold wallet, selections, the margin account and transaction progress. TanStack Query and ledger-tick hooks refresh data. App-side safety constants live in lib/account-model.ts: LIQ_HF = 1.1 (the contract line), SAFE_HF = 1.15 (Spot blocks a swap that lowers health below it) and WARN_HF = 1.25. The Margin leverage slider is capped at 10x and by the RiskEngine borrow limit.
APIs
All server routes are under/api/stellar/.
Data limitations
The Analytics account scan reads up to the 200 most recent margin accounts from the Registry. Risk Explorer scenarios run on that live snapshot; only their stress presets come fromlib/analytics/data/mock.ts. Scenario outputs are conditional calculations, not forecasts. Derived equity is not realized profit, and history can be missing when Mercury or RPC retention has gaps.
Copilot integration
lib/copilot includes intent routing, planning, asset readiness, plan sanitization, approval checks, wallet binding, conditional guards, write deduplication, auto-approve budgets and execution receipts. The agent runs inside the Next.js server and calls a configured MCP service. With Freighter, every transaction still opens the wallet for a signature. Presence of these code paths does not prove the external services are configured or available.
Source reference
Vanna_Finance_Backend/apps/stellar/appVanna_Finance_Backend/apps/stellar/lib/constants.tsVanna_Finance_Backend/apps/stellar/lib/account-model.tsVanna_Finance_Backend/apps/stellar/lib/wallet-adapter.tsVanna_Finance_Backend/apps/stellar/lib/copilot/config.tsVanna_Finance_Backend/packages/shared/v4/connect-modal.tsxVanna_Finance_Backend/packages/shared/dynamic/dynamic-session.tsx

