# Developing a Decentralized Application on the Web - [Preface](https://www.devteam.space/blog/how-to-build-a-decentralized-application-dapps/) ------ - Ethereum is a great blockchain to develop low scale decentalized apps. - There are various IDEs and tech stacks you can use instead of what is shown below. - Before you begin developing your web dApp, you need to have a solid under standing of smart contracts and the solidity programming language - Once you finishing developing and testing your contract, you can publish your smart on the blockchain. - With the introduction of blockchain technologies, the internet recently expanded from Web2 to Web3 status. - This can be known as the token economy in which decentralized apps can be created and grown using decentralized platforms and currencies(tokens and nfts). - Web3 dApp Tech Stack ----- ![](https://i.imgur.com/uSe94lt.jpg) - Developing a UI using Web3 ------ - Assuming you have developed your idea into a smart contract, you can begin to creating the web interface for your users. - Moralis is a company that provides Web3 API's and SDKs for you to integrate your smart contract into your website using Web3 - Using Moralis Web3 UI Kit you integrate features easily such as: - Authentication - General UI Elements - Buttons - Tables - Avatars - Here is a [Introduction to Web3 UI](https://moralis.io/web3-ui-how-to-create-a-great-dapp-ui/) by Moralis which explains indepth what UI is and how Web3 has revolutionized it. - Reading through Documentation by companies such as Moralis will help speed up your development process. - This is because there are many libraries and smart contracts which are meant to be used as templates for your own ideas. - [OpenZepplin](https://docs.openzeppelin.com/contracts/4.x/) is another great library for smart contracts such as making a NFTs - Almost every 10 years the internet has entered a new phase - So far we have transitioned from Web 1 -> Web 2 and now Web 3 - In order to understand the importance of Web 3 we have to identify the main addition each stage has offered. - ![](https://i.imgur.com/3FvUsuf.png) ### Stage 1: Web 1.0 - When the internet first appeared, it was **static** and only conveyed information to users - This was useful for connecting people worldwide to spread information - This can simple could only **read** info ### Stage 2: Web 2.0 - Soon enough people wanted to interact and discuss this new web of information on the internet so Web 2.0 was created - This method of internet connectivity can be described as **dynamic**, as opposed to static Web 1.0 - This gave rise to social media in which users could **read** (view) posts as well as **write** their own post - However those media platforms have access to mass amounts personal data for each user and their **reading** and **writing** ### Stage 3: Web 3.0 - Personal information is being sold everyday and is particularly useful for businesses and governments - Web 3 aims to solve these privacy concern by utilizing a decentralized internet - AKA a peer to peer internet - **Decentralized Data** - Peers data are not owned by centralized organizations - Instead the data is shared publicly between peers - These new Decentralized app's have the potential to replace traditional applications as we know them today ### dApps - decentralized Applications - dApps are the backbone of why Web 3 is so important - Can be also referred to as: - Web 3 Apps - Web 3 Applications - decentralized apps - dApp's - Web 3 dApp's - The goal of dApp's is for the internet to become a more decentralized system - How are dApp's made: - Simple, with **Smart Contracts** - These contracts are code programs that are uploaded and running on the blockchain - These contracts automatically verify and perform transactions between different peers - Peers are the same as users - Since these apps are using the contracts logic, the contract dictates the app's behavior ### Additional Reading - If you want to interact with your Web3 app to create a website, you will be utilizing **Javascript** - Specifically **Web3.js**, which is a Blockchain API for developing web3 apps that connect to a website with a UI - You can then create applications that can interact with different blockchains - **Web3.js** is essential for connecting the gap between javascript and Web3 to develop a dApp - Javascript is natively supported in all browsers so people who access you dApp website can interact with your app using a better UI rather than the **block explorer** - The block explorer is used by every chain to record accounts and transactions - You can test your contracts read and write functions without developing a website, however the UI will be poor ### Achieving Full Decentralization - Connecting you dApp with real word data means you have to access centralized data sources - **IPFS** is distributed system for storing and accessing files - Doesn't access internet through single server or URLS - Accesses content from peers in the **IPFS network** around the world - This is more resilient and allows freedom of accessing content without worrying about security of a single data source - Essentially we are accessing **data in a decentralized manner** - **Participation** - *"Today's World Wide Web is structured on ownership and access, meaning that you get files from whoever owns them — if they choose to grant you access. IPFS is based on the ideas of possession and participation, where many people possess each others' files and participate in making them available."*