Docs
ROZEV Architecture
How the application is layered: sources, providers, signal engine, and the terminal UI.
ROZEV is a Next.js App Router application. Server components fetch through a provider layer; client components are limited to interactivity and charts.
src/lib/providers/ sources/geckoterminal.ts raw GeckoTerminal client + mappers sources/defillama.ts raw DefiLlama client + mappers sources/http.ts cached fetch with typed failures chain-provider.ts chain TVL, TVL history, DEX distribution market-provider.ts overview, trending, Liquidity Pulse, search pool-provider.ts pool lists, pool detail, candles token-provider.ts token detail, token pools src/lib/signal.ts ROZEV Signal formulas src/app/api/* thin route handlers for client-side refresh
Result envelope
Every provider returns a Result<T> containing the data and a metadata block with a status of live, estimated, demo or unavailable, the upstream source, and a fetch timestamp. The UI renders a badge from this status next to every panel, so a reader always knows what they are looking at.
Swapping a source
Pages never import upstream clients directly. To add a subgraph, an RPC-backed reader or a different aggregator, implement a module under sources/, map it to the shared types, and wire it into the relevant provider. Route handlers and pages remain unchanged.