Blockchain and smart contract development are still relatively new and highly experimental.
They require a different engineering mindset than traditional web, or app development where ‘move fast and break things’ has become the norm. Blockchain development is much more like hardware, or financial service development.
Each aspect of any application can be somewhat centralized <-> or decentralized.
- frontend – can run on a centralized server <-> run on your device as a mobile app
- backend and storage – can be on private servers and proprietary databases <-> can be used a smart contract and peer-to-peer storage
DApp is an application that is mostly or entirely decentralized.