DipDup is a Python framework for creating backends for Tezos dApps.
A minimal setup for a decentralized application is smart contract + web interface working on top of Tezos RPC. That should be enough for simple cases, however once you need history, aggregated data, time series, complex filtering, a custom backend is required. You can surely try to get around by using indexer APIs, like TzKT or others, but they are not the most feasible solutions for the high levels of customization you might want.
Here comes "layer-2" or "selective" indexing:
- Only the data relevant to your dApp is fetched during the synchronization;
- Your internal data model is dApp specific as opposed to blocks, operations, and other generic entities.
The DipDup framework utilizes this approach and abstracts developers from the indexing workflow, letting them focus on the business logic.
Although you can expose the indexed data in any way you want (e.g. write your own backend) DipDup works best together with the Hasura engine which generates GraphQL endpoints (both for queries and subscriptions) right from the database schema.
DipDup automatically configures Hasura in runtime and saves the developer the hassle of API design and maintenance.