We need a fast, user-friendly transaction history API for our banking app. Customers should be able to see their deposits, withdrawals, and transfers, filter by type and a date range, and keep scrolling without slowdowns—even as the table grows to tens of millions of rows. Use JWT for authentication and build with FastAPI. The endpoint is GET /v1/transactions and supports limit, an opaque cursor for infinite scroll, type, start_date, and end_date. Return a list of transactions and a next_cursor. To keep response times consistently low, use index-backed keyset (cursor) pagination—not offset—and create a composite B‑tree index on (user_id, created_at DESC) in PostgreSQL.