Decentralized applications (dApps)
One of the main features of blockchains is decentralization: each transaction is verified by multiple nodes and its validation process does not rely on a single trusted third party. Decentralized applications (dApps or Dapps) take advantage of these features to create applications that are independent, transparent, and trustless.
In general, dApps have these parts:
- Frontend: An off-chain component that can act as a user interface to simplify interaction with the on-chain component, run off-chain processing, and get information from sources that are not available to the on-chain component
 - Middleware: Optionally, an indexer to interpret the backend information and provide it in a more convenient format for the front-end component
 - Backend: An on-chain component that consists of one or more smart contracts
 
The off-chain component can be nearly any kind of program, including a web application, mobile or desktop app, or command-line interface. It relies on wallets and tools to interact with the smart contract on behalf of a user's Tezos account.
Some of these tools that allow an off-chain component to interact with smart contracts include:
- Taquito, an SDK for JavaScript/TypeScript applications
 - The Tezos SDK for Unity, a toolkit for Unity applications
 - Taqueria, a development platform for dApps
 
Sample dApps
For example dApps, see Sample dApps.
Best practices
Good programming and design practices make dApps easier to use and provide a better user experience. See Best practices and avoiding flaws.
dApp tasks
For information on typical tasks that dApps do, see:
Tutorials
These tutorials cover dApps of different complexities:
- For a simple dApp, see Build your first app on Tezos
 - For a dApp that mints NFTs, see Mint NFTs from a web app
 - For a large dApp that allows users to buy and sell NFTs, see Build an NFT marketplace