# 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
-----

- 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.
- 
### 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."*