Cross-chain DeFi dashboard for tracking POKT prices, pool TVLs, and transaction volumes across Ethereum, Base, and Solana.
/packages
├── indexer # Fetch + normalize current data from The Graph, Moralis, Orca, and CoinMarketCap APIs into TimescaleDB
├── api # Express + Apollo GraphQL API exposing time-series data
├── client # Frontend application
pnpm installcp packages/indexer/.env.sample packages/indexer/.envpnpm setup:dbpnpm dev:indexercp packages/api/.env.sample packages/api/.env- Make sure to set missing envs
pnpm devGraphQL API: http://localhost:4000/graphql
- For documentation on API schemas, visit the graphql endpoint in the browser
- You will get redirected to an Apollo frontend that maps out all schemas and resolvers
Client: http://localhost:3000
cp .env.sample .envcp packages/indexer/.env.sample packages/indexer/.envcp packages/api/.env.sample packages/api/.envcp packages/client/.env.sample packages/client/.env- Make sure to set missing envs
docker compose up --buildGraphQL API: http://localhost:4000/graphql
- TypeScript monorepo (
pnpm) - TimescaleDB (PostgreSQL 16)
- The Graph API (EVM)
- Orca API (Solana)
- Moralis API (EVM + Solana)
- CoinMarketCap API (EVM + Solana)
- Node Cron for job scheduling
- Apollo Server (GraphQL over Express)
- Use
psqlorpgAdminto inspect the TimescaleDB - All timestamps are stored in milliseconds, but in the API, they are returned as seconds
- Use
to_timestamp(timestamp / 1000.0)in raw SQL
