# Ponder
> Ponder is an open-source TypeScript framework for EVM data indexing.
## Docs
- [0.2](/blog/0.2.0): Concurrent indexing, cursor pagination, and more
- [Blog](/blog)
- [Introducing Ponder](/blog/introducing-ponder): An open-source framework for crypto apps
- [Ponder’s (ongoing) journey to 100,000 events per second](/blog/performance): Kyle Scott
June 23, 2025
- [Database](/docs/database): Set up the database
- [Get started](/docs/get-started): An introduction to Ponder
- [Migration guide](/docs/migration-guide): Upgrade to a new version of Ponder
- [Requirements](/docs/requirements): Get Ponder running on your machine
- [Why Ponder](/docs/why-ponder): Notes on why we built Ponder
- [Database](/docs/0.10/database): Set up the database
- [Get started](/docs/0.10/get-started): An introduction to Ponder
- [Migration guide](/docs/0.10/migration-guide): Upgrade to a new version of Ponder
- [Requirements](/docs/0.10/requirements): Get Ponder running on your machine
- [Database](/docs/0.11/database): Set up the database
- [Get started](/docs/0.11/get-started): An introduction to Ponder
- [Migration guide](/docs/0.11/migration-guide): Upgrade to a new version of Ponder
- [Requirements](/docs/0.11/requirements): Get Ponder running on your machine
- [Database](/docs/0.12/database): Set up the database
- [Get started](/docs/0.12/get-started): An introduction to Ponder
- [Migration guide](/docs/0.12/migration-guide): Upgrade to a new version of Ponder
- [Requirements](/docs/0.12/requirements): Get Ponder running on your machine
- [Database](/docs/0.14/database): Set up the database
- [Get started](/docs/0.14/get-started): An introduction to Ponder
- [Migration guide](/docs/0.14/migration-guide): Upgrade to a new version of Ponder
- [Requirements](/docs/0.14/requirements): Get Ponder running on your machine
- [Database](/docs/0.15/database): Set up the database
- [Get started](/docs/0.15/get-started): An introduction to Ponder
- [Migration guide](/docs/0.15/migration-guide): Upgrade to a new version of Ponder
- [Requirements](/docs/0.15/requirements): Get Ponder running on your machine
- [Observability](/docs/advanced/observability): Logs, metrics, and indexing status
- [Telemetry](/docs/advanced/telemetry): How Ponder collects and uses telemetry
- [Accounts](/docs/config/accounts): Index transactions and native transfers
- [Block intervals](/docs/config/block-intervals): Run logic on a regular schedule
- [Chains](/docs/config/chains): Configure chain IDs and RPC endpoints
- [Contracts](/docs/config/contracts): Index events emitted by a contract
- [Bun](/docs/guides/bun): Running Ponder with Bun
- [Call traces](/docs/guides/call-traces): Index call traces for a contract
- [Factory pattern](/docs/guides/factory): Collect a dynamic list of addresses
- [Foundry](/docs/guides/foundry): Use Ponder with Foundry
- [Isolated indexing](/docs/guides/isolated-indexing): Index each chain independently
- [Offchain data](/docs/guides/offchain-data): Combine onchain and offchain data
- [Transaction receipts](/docs/guides/receipts): Fetch transaction receipts
- [Time-series data](/docs/guides/time-series): Techniques for working with time-series data
- [Indexing](/docs/indexing/overview): Write indexing functions that populate the database
- [Read contract data](/docs/indexing/read-contracts): Call read-only functions directly
- [Write to the database](/docs/indexing/write): Insert, update, and delete rows
- [Deploy on Railway](/docs/production/railway): Host a Ponder app on Railway
- [Self-hosting](/docs/production/self-hosting): Host a Ponder app on your own infrastructure
- [API endpoints](/docs/query/api-endpoints): Customize the HTTP server
- [Direct SQL](/docs/query/direct-sql): Query indexed data directly in Postgres
- [GraphQL](/docs/query/graphql): Query the autogenerated GraphQL API
- [SQL over HTTP](/docs/query/sql-over-http): Query with custom SQL over HTTP
- [Relations](/docs/schema/relations): Define relationships between database tables
- [Tables](/docs/schema/tables): Define database tables and columns
- [Custom views](/docs/schema/views): Define custom database views over onchain data
- [Observability](/docs/0.10/advanced/observability): Logs, metrics, and indexing status
- [Telemetry](/docs/0.10/advanced/telemetry): How Ponder collects and uses telemetry
- [Accounts](/docs/0.10/config/accounts): Index transactions and native transfers
- [Block intervals](/docs/0.10/config/block-intervals): Run logic on a regular schedule
- [Contracts](/docs/0.10/config/contracts): Index events emitted by a contract
- [Networks](/docs/0.10/config/networks): Configure chain IDs and transports
- [Call traces](/docs/0.10/guides/call-traces): Index call traces for a contract
- [Factory pattern](/docs/0.10/guides/factory): Collect a dynamic list of addresses
- [Foundry](/docs/0.10/guides/foundry): Use Ponder with Foundry
- [Transaction receipts](/docs/0.10/guides/receipts): Fetch transaction receipts
- [Time-series data](/docs/0.10/guides/time-series): Techniques for working with time-series data
- [Indexing](/docs/0.10/indexing/overview): Write indexing functions that populate the database
- [Read contract data](/docs/0.10/indexing/read-contracts): Call read-only functions directly
- [Write to the database](/docs/0.10/indexing/write): Insert, update, and delete rows
- [Deploy on Railway](/docs/0.10/production/railway): Host a Ponder app on Railway
- [Self-hosting](/docs/0.10/production/self-hosting): Host a Ponder app on your own infrastructure
- [API endpoints](/docs/0.10/query/api-endpoints): Customize the HTTP server
- [Direct SQL](/docs/0.10/query/direct-sql): Query indexed data directly in Postgres
- [GraphQL](/docs/0.10/query/graphql): Query the autogenerated GraphQL API
- [SQL client](/docs/0.10/query/sql-client): Query with custom SQL over HTTP
- [Relations](/docs/0.10/schema/relations): Define relationships between database tables
- [Tables](/docs/0.10/schema/tables): Define database tables and columns
- [Observability](/docs/0.11/advanced/observability): Logs, metrics, and indexing status
- [Telemetry](/docs/0.11/advanced/telemetry): How Ponder collects and uses telemetry
- [Accounts](/docs/0.11/config/accounts): Index transactions and native transfers
- [Block intervals](/docs/0.11/config/block-intervals): Run logic on a regular schedule
- [Chains](/docs/0.11/config/chains): Configure chain IDs and RPC endpoints
- [Contracts](/docs/0.11/config/contracts): Index events emitted by a contract
- [Call traces](/docs/0.11/guides/call-traces): Index call traces for a contract
- [Factory pattern](/docs/0.11/guides/factory): Collect a dynamic list of addresses
- [Foundry](/docs/0.11/guides/foundry): Use Ponder with Foundry
- [Offchain data](/docs/0.11/guides/offchain-data): Combine onchain and offchain data
- [Transaction receipts](/docs/0.11/guides/receipts): Fetch transaction receipts
- [Time-series data](/docs/0.11/guides/time-series): Techniques for working with time-series data
- [Indexing](/docs/0.11/indexing/overview): Write indexing functions that populate the database
- [Read contract data](/docs/0.11/indexing/read-contracts): Call read-only functions directly
- [Write to the database](/docs/0.11/indexing/write): Insert, update, and delete rows
- [Deploy on Railway](/docs/0.11/production/railway): Host a Ponder app on Railway
- [Self-hosting](/docs/0.11/production/self-hosting): Host a Ponder app on your own infrastructure
- [API endpoints](/docs/0.11/query/api-endpoints): Customize the HTTP server
- [Direct SQL](/docs/0.11/query/direct-sql): Query indexed data directly in Postgres
- [GraphQL](/docs/0.11/query/graphql): Query the autogenerated GraphQL API
- [SQL over HTTP](/docs/0.11/query/sql-over-http): Query with custom SQL over HTTP
- [Relations](/docs/0.11/schema/relations): Define relationships between database tables
- [Tables](/docs/0.11/schema/tables): Define database tables and columns
- [Observability](/docs/0.12/advanced/observability): Logs, metrics, and indexing status
- [Telemetry](/docs/0.12/advanced/telemetry): How Ponder collects and uses telemetry
- [Accounts](/docs/0.12/config/accounts): Index transactions and native transfers
- [Block intervals](/docs/0.12/config/block-intervals): Run logic on a regular schedule
- [Chains](/docs/0.12/config/chains): Configure chain IDs and RPC endpoints
- [Contracts](/docs/0.12/config/contracts): Index events emitted by a contract
- [Call traces](/docs/0.12/guides/call-traces): Index call traces for a contract
- [Factory pattern](/docs/0.12/guides/factory): Collect a dynamic list of addresses
- [Foundry](/docs/0.12/guides/foundry): Use Ponder with Foundry
- [Offchain data](/docs/0.12/guides/offchain-data): Combine onchain and offchain data
- [Transaction receipts](/docs/0.12/guides/receipts): Fetch transaction receipts
- [Time-series data](/docs/0.12/guides/time-series): Techniques for working with time-series data
- [Indexing](/docs/0.12/indexing/overview): Write indexing functions that populate the database
- [Read contract data](/docs/0.12/indexing/read-contracts): Call read-only functions directly
- [Write to the database](/docs/0.12/indexing/write): Insert, update, and delete rows
- [Deploy on Railway](/docs/0.12/production/railway): Host a Ponder app on Railway
- [Self-hosting](/docs/0.12/production/self-hosting): Host a Ponder app on your own infrastructure
- [API endpoints](/docs/0.12/query/api-endpoints): Customize the HTTP server
- [Direct SQL](/docs/0.12/query/direct-sql): Query indexed data directly in Postgres
- [GraphQL](/docs/0.12/query/graphql): Query the autogenerated GraphQL API
- [SQL over HTTP](/docs/0.12/query/sql-over-http): Query with custom SQL over HTTP
- [Relations](/docs/0.12/schema/relations): Define relationships between database tables
- [Tables](/docs/0.12/schema/tables): Define database tables and columns
- [Observability](/docs/0.14/advanced/observability): Logs, metrics, and indexing status
- [Telemetry](/docs/0.14/advanced/telemetry): How Ponder collects and uses telemetry
- [Accounts](/docs/0.14/config/accounts): Index transactions and native transfers
- [Block intervals](/docs/0.14/config/block-intervals): Run logic on a regular schedule
- [Chains](/docs/0.14/config/chains): Configure chain IDs and RPC endpoints
- [Contracts](/docs/0.14/config/contracts): Index events emitted by a contract
- [Call traces](/docs/0.14/guides/call-traces): Index call traces for a contract
- [Factory pattern](/docs/0.14/guides/factory): Collect a dynamic list of addresses
- [Foundry](/docs/0.14/guides/foundry): Use Ponder with Foundry
- [Offchain data](/docs/0.14/guides/offchain-data): Combine onchain and offchain data
- [Transaction receipts](/docs/0.14/guides/receipts): Fetch transaction receipts
- [Time-series data](/docs/0.14/guides/time-series): Techniques for working with time-series data
- [Indexing](/docs/0.14/indexing/overview): Write indexing functions that populate the database
- [Read contract data](/docs/0.14/indexing/read-contracts): Call read-only functions directly
- [Write to the database](/docs/0.14/indexing/write): Insert, update, and delete rows
- [Deploy on Railway](/docs/0.14/production/railway): Host a Ponder app on Railway
- [Self-hosting](/docs/0.14/production/self-hosting): Host a Ponder app on your own infrastructure
- [API endpoints](/docs/0.14/query/api-endpoints): Customize the HTTP server
- [Direct SQL](/docs/0.14/query/direct-sql): Query indexed data directly in Postgres
- [GraphQL](/docs/0.14/query/graphql): Query the autogenerated GraphQL API
- [SQL over HTTP](/docs/0.14/query/sql-over-http): Query with custom SQL over HTTP
- [Relations](/docs/0.14/schema/relations): Define relationships between database tables
- [Tables](/docs/0.14/schema/tables): Define database tables and columns
- [Custom views](/docs/0.14/schema/views): Define custom database views over onchain data
- [Observability](/docs/0.15/advanced/observability): Logs, metrics, and indexing status
- [Telemetry](/docs/0.15/advanced/telemetry): How Ponder collects and uses telemetry
- [Accounts](/docs/0.15/config/accounts): Index transactions and native transfers
- [Block intervals](/docs/0.15/config/block-intervals): Run logic on a regular schedule
- [Chains](/docs/0.15/config/chains): Configure chain IDs and RPC endpoints
- [Contracts](/docs/0.15/config/contracts): Index events emitted by a contract
- [Call traces](/docs/0.15/guides/call-traces): Index call traces for a contract
- [Factory pattern](/docs/0.15/guides/factory): Collect a dynamic list of addresses
- [Foundry](/docs/0.15/guides/foundry): Use Ponder with Foundry
- [Isolated indexing](/docs/0.15/guides/isolated-indexing): Index each chain independently
- [Offchain data](/docs/0.15/guides/offchain-data): Combine onchain and offchain data
- [Transaction receipts](/docs/0.15/guides/receipts): Fetch transaction receipts
- [Time-series data](/docs/0.15/guides/time-series): Techniques for working with time-series data
- [Indexing](/docs/0.15/indexing/overview): Write indexing functions that populate the database
- [Read contract data](/docs/0.15/indexing/read-contracts): Call read-only functions directly
- [Write to the database](/docs/0.15/indexing/write): Insert, update, and delete rows
- [Deploy on Railway](/docs/0.15/production/railway): Host a Ponder app on Railway
- [Self-hosting](/docs/0.15/production/self-hosting): Host a Ponder app on your own infrastructure
- [API endpoints](/docs/0.15/query/api-endpoints): Customize the HTTP server
- [Direct SQL](/docs/0.15/query/direct-sql): Query indexed data directly in Postgres
- [GraphQL](/docs/0.15/query/graphql): Query the autogenerated GraphQL API
- [SQL over HTTP](/docs/0.15/query/sql-over-http): Query with custom SQL over HTTP
- [Relations](/docs/0.15/schema/relations): Define relationships between database tables
- [Tables](/docs/0.15/schema/tables): Define database tables and columns
- [Custom views](/docs/0.15/schema/views): Define custom database views over onchain data
- [API endpoints](/docs/api-reference/ponder/api-endpoints): API reference
- [Database reference](/docs/api-reference/ponder/database): API reference
- [Indexing functions](/docs/api-reference/ponder/indexing-functions): API reference
- [API endpoints](/docs/0.10/api-reference/ponder/api-endpoints): API reference
- [Database reference](/docs/0.10/api-reference/ponder/database): API reference
- [Indexing functions](/docs/0.10/api-reference/ponder/indexing-functions): API reference
- [API endpoints](/docs/0.11/api-reference/ponder/api-endpoints): API reference
- [Database reference](/docs/0.11/api-reference/ponder/database): API reference
- [Indexing functions](/docs/0.11/api-reference/ponder/indexing-functions): API reference
- [API endpoints](/docs/0.12/api-reference/ponder/api-endpoints): API reference
- [Database reference](/docs/0.12/api-reference/ponder/database): API reference
- [Indexing functions](/docs/0.12/api-reference/ponder/indexing-functions): API reference
- [API endpoints](/docs/0.14/api-reference/ponder/api-endpoints): API reference
- [Database reference](/docs/0.14/api-reference/ponder/database): API reference
- [Indexing functions](/docs/0.14/api-reference/ponder/indexing-functions): API reference
- [API endpoints](/docs/0.15/api-reference/ponder/api-endpoints): API reference
- [Database reference](/docs/0.15/api-reference/ponder/database): API reference
- [Indexing functions](/docs/0.15/api-reference/ponder/indexing-functions): API reference