DApps have their backend code running on a decentralized peer-to-peer network, as opposed to typical applications where the backend code is running on centralized servers. A DApp can have frontend code and user interfaces written in any language that can make calls to its backend. Furthermore, its frontend can be hosted on decentralized storage such as Swarm or IPFS. DApps are typically open source, decentralized, incentivized through providing tokens to those who validate the DApp, and in compliance with a specific protocol agreed upon within the community.