# 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