Full-stack command center for ERC-4626 yield vaults. YieldPulse brings vault analytics, Tenderly-powered simulations, and wallet execution together so you can scout and act on strategies across Aave, Curve, Pendle, and more from one dashboard.
- Unified analytics: Normalises ERC-4626 metrics into comparable APY, TVL, and capacity signals across chains.
- Actionable simulations: Tenderly-backed preflight checks for deposits/withdrawals directly inside the UI.
- Wallet-native UX: Wagmi/WalletConnect flows with chain selectors, environment toggles, and responsive design.
- Modular stack: Fastify API/indexer, TypeScript SDK, Foundry contracts, and Next.js frontend wired by Turborepo.
root/
apps/
api/ # Fastify API, indexer façade, Tenderly proxy
web/ # Next.js frontend (YieldPulse UI)
packages/
sdk/ # Shared TypeScript SDK (types + helpers)
contracts/ # Foundry contracts and libraries
ui/ # Shared component primitives (placeholder)
docs/ # Diagrams, playbooks
ops/ # Subgraph/Substreams configs, docker assets
- Build system: Turborepo + pnpm workspaces
- Frontend: Next.js 14, React 18, Tailwind, Framer Motion, Wagmi, Viem
- Backend: Fastify 4, Zod validation, Tenderly integration hooks
- Contracts: Foundry + OpenZeppelin + forge-std tooling
- Tooling: TypeScript everywhere, ESLint/Prettier, Vitest, tsup, tsx
Requirements: Node.js 20.x, pnpm 8.x, Foundry (for contract builds)
pnpm install
pnpm dev # runs all dev scripts via TurborepoCommon scoped commands:
pnpm --filter @yield-dashboard/web dev # frontend only
pnpm --filter @yield-dashboard/api dev # API only
pnpm --filter @yield-dashboard/sdk build # build shared SDK
pnpm turbo run lint # lint all packagesSet these in Netlify (or .env.local for local dev):
NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com
NEXT_PUBLIC_NETWORK_ENV=testnet # or mainnet
NEXT_PUBLIC_WALLETCONNECT_ID=wc_project_id # optional but recommended
NEXT_PUBLIC_COMMIT_SHA=dev # shown in footer, optional
PORT=3001
LOG_LEVEL=info
CORS_ORIGIN=https://yieldpulse.app # comma-separated list allowed
NETWORK_ENV=testnet # mainnet | testnet
TENDERLY_PROJECT=...
TENDERLY_ACCESS_KEY=...
Configure additional secrets (Redis, RPC URLs, etc.) as integrations land.
Netlify picks up configuration from netlify.toml.
- Connect the Git repository.
- Add the frontend env vars above via the Netlify UI (mark secrets as such).
- Trigger a deploy. Netlify runs
pnpm turbo run build --filter=@yield-dashboard/webwhich builds dependencies (SDK, etc.) before the Next.js app. Output is served fromapps/web/.nextvia the official Netlify Next.js adapter.
- Build:
pnpm --filter @yield-dashboard/api build. - Deploy the resulting Node service (or create a Docker image).
- Provide the API env vars on the host (PORT, LOG_LEVEL, Tenderly keys, RPC endpoints, etc.).
- Expose HTTPS endpoint and point the frontend’s
NEXT_PUBLIC_API_BASE_URLto it.
Contracts are built with Foundry: cd packages/contracts && forge build. Deployment scripts / addresses will live under ops/ (work in progress).
pnpm turbo run lint– ESLint across workspaces.pnpm turbo run test– Vitest suites (SDK/API as they land).pnpm turbo run build– Full build matrix with dependency graph.pnpm --filter @yield-dashboard/api dev– Fastify server with hot reload.pnpm --filter @yield-dashboard/web dev– Next.js dev server with HMR.
- Wire live indexers + caching into the API, replace seeded data.
- Add authenticated operator flows: vault management, risk overrides.
- Expand contract suite with ERC-4626 factory, strategy adapters, security reviews.
- Harden testing (Foundry fuzzing, Slither, e2e Playwright) and document runbooks.
YieldPulse is for demonstration and educational purposes only. Nothing here constitutes financial advice. Use at your own risk.