<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oxpampam</title>
    <description>The latest articles on DEV Community by Oxpampam (@oxpampam).</description>
    <link>https://dev.to/oxpampam</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F939840%2F0e4c0275-d4ec-42b6-98d4-12ca3e8f93f3.jpeg</url>
      <title>DEV Community: Oxpampam</title>
      <link>https://dev.to/oxpampam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oxpampam"/>
    <language>en</language>
    <item>
      <title>Beginners Guide To Building A Static Decentralized Website(dWebsite) Using IPFS + Unstoppable Domains</title>
      <dc:creator>Oxpampam</dc:creator>
      <pubDate>Tue, 14 Mar 2023 14:38:38 +0000</pubDate>
      <link>https://dev.to/oxpampam/beginners-guide-to-building-a-static-decentralized-websitedwebsite-using-ipfs-unstoppable-domains-5b2l</link>
      <guid>https://dev.to/oxpampam/beginners-guide-to-building-a-static-decentralized-websitedwebsite-using-ipfs-unstoppable-domains-5b2l</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the traditional online space, hosting a website would entail using dedicated or shared hosting plans from platforms such as Hostinger, BlueHost, e.t.c, creating and registering a domain name with services such as NameCheap and Google domains, and lastly pointing your domain to your hosted server.&lt;/p&gt;

&lt;p&gt;Having said that, this process appears to be experiencing major setbacks. Centralised registrars and private servers are becoming increasingly vulnerable to phishing attacks, denial of service attacks, hijacking, and other forms of threats. Websites can be taken down because these providers control your content. When this occurs, web content becomes unavailable to end users, increasing the &lt;a href="https://en.wikipedia.org/wiki/Bounce_rate"&gt;bounce rate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, you would want users to have complete access to your content at all times, right? This is where decentralized hosting and serving of your website comes into play.&lt;/p&gt;

&lt;p&gt;Decentralized web hosting uses a &lt;a href="https://en.wikipedia.org/wiki/Peer-to-peer"&gt;peer-to-peer&lt;/a&gt; system to store content across computer networks (nodes). In this case, even if one node fails, your content is served by other running nodes, ensuring that your content is always available.&lt;/p&gt;

&lt;p&gt;In this article, you will learn how to host a static website using the Interplanetary File System (IPFS), Pinata, and Unstoppable Domain (UD), as well as visualize the content in your browser. Here's a quick rundown of what you'll be doing in this article:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;What are decentralized websites&lt;/li&gt;
&lt;li&gt;Prerequisite&lt;/li&gt;
&lt;li&gt;
Building your Static Webpage

&lt;ul&gt;
&lt;li&gt;Deploying to IPFS&lt;/li&gt;
&lt;li&gt;Pinning website on Piñata&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Purchasing Domain on Unstoppable domain&lt;/li&gt;
&lt;li&gt;Connecting IPFS hash on UD&lt;/li&gt;
&lt;li&gt;Resolving dWebsites in a browser&lt;/li&gt;
&lt;li&gt;Websites hosted using IPFS + UD(dWebsite)&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Decentralized Websites(dWebsites)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8ixKZkMC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zryy0ja5ct5o7djw4nuc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8ixKZkMC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zryy0ja5ct5o7djw4nuc.png" alt="dweb-illustration" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simply put, dWebsites are websites that serve censorship-resistant content to end users by utilizing the &lt;strong&gt;decentralized storage system&lt;/strong&gt; and &lt;strong&gt;blockchain domains&lt;/strong&gt;. Let us now break down these two concepts and explain why they are important to dWebsites.&lt;/p&gt;

&lt;p&gt;dWebsites, as opposed to traditional websites, use decentralized storage (dStorage) systems to ensure that data or websites stored are accessible, have no single point of failure, and cannot be shut down. IPFS is one example of a dStorage system.&lt;/p&gt;

&lt;p&gt;The Interplanetary File System (IPFS) is a distributed peer-to-peer system for storing and accessing files, websites, applications, and data. When storing data, IPFS stores data based on its content and returns the content identifier(CID), which is a unique hash of that data. Unlike the traditional web, which uses &lt;a href="https://www.computerlanguage.com/results.php?definition=location-based+addressing#:~:text=Identifying%20data%20by%20its%20physical,ppsx."&gt;location addressing&lt;/a&gt;, IPFS employs content addressing, which means that files are stored based on their content rather than their location. As a result, you won't be able to change the content of the files while keeping the same CID. Therefore, if the content changes, so does the CID.&lt;/p&gt;

&lt;p&gt;Blockchain domains are another essential part of dWebsite. These domain names are required for mapping d-website hash (CID) hosted on IPFS to human-readable names. In contrast to traditional domain naming services (DNS), which are prone to downtime and single-point control, decentralized DNS stores their domain registries on the blockchain, making it resilient.&lt;/p&gt;

&lt;p&gt;For the purposes of this tutorial, you will purchase your blockchain domain from &lt;a href="https://unstoppabledomains.com/"&gt;Unstoppable Domains&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now that you know what decentralized websites are, let's get started building one!&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Must be familiar with &lt;a href="https://www.codecademy.com/learn/learn-the-command-line"&gt;Command Line&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Basic Knowledge of &lt;a href="https://www.w3schools.com/html/"&gt;HTML&lt;/a&gt;, &lt;a href="https://www.w3schools.com/css/"&gt;CSS&lt;/a&gt;, and &lt;a href="https://www.w3schools.com/js/"&gt;Javascript(JS)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building your Static Webpage
&lt;/h2&gt;

&lt;p&gt;This section demonstrates how I uploaded my simple portfolio website to IPFS.&lt;/p&gt;

&lt;p&gt;To host your simple one-page on IPFS, you must have created a &lt;code&gt;index.html&lt;/code&gt; file in your project folder and added your &lt;code&gt;CSS&lt;/code&gt; and any other assets. To understand the structure, read this &lt;a href="https://docs.ipfs.tech/how-to/websites-on-ipfs/single-page-website/#add-your-site"&gt;guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can host a multipage website in addition to a single-page website. To accomplish this, refer to this &lt;a href="https://docs.ipfs.tech/how-to/websites-on-ipfs/multipage-website/"&gt;guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can find the full implementation of my static website on &lt;a href="https://gist.github.com/AyDeveloper/eda999a4109d4fc6c558a68a2726b8c3"&gt;Github&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Deploying to IPFS
&lt;/h3&gt;

&lt;p&gt;After you've successfully created your website project, the next step is to host it on IPFS. In this section, you'll learn how to use &lt;a href="https://docs.ipfs.tech/install/command-line/"&gt;IPFS CLI&lt;/a&gt; to host your content on IPFS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installing IPFS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This section shows how to install IPFS using Javascript. To install IPFS, execute the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; ipfs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To confirm its download, run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jsipfs —version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click this link to see other ways to install &lt;a href="https://ipfs.tech/#install"&gt;IPFS&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uploading your website to IPFS
&lt;/h3&gt;

&lt;p&gt;After successfully installing IPFS, we need to initialize IPFS. To do this, run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jsipfs init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next step is to connect and interact with the IPFS network, by starting the daemon. To do this, run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jsipfs daemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
Your terminal logs an output, as displayed in the image below. Click on the link to navigate to the IPFS Web UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RUBnYS0Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dbqu73sas1z1ludun2q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RUBnYS0Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dbqu73sas1z1ludun2q.jpeg" alt="dweb-ipfs-web-ui" width="880" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we have IPFS up and running, let's upload our website to IPFS. To do this, open up a new terminal in your project folder and run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jsipfs add &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The -r flag adds recursively, and the “.” indicates we are running the command from the webpage directory.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It returns the hash/CID of the folder uploaded on IPFS&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2KvoUsXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ce0i3wr5egq65t6jrqq1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2KvoUsXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ce0i3wr5egq65t6jrqq1.jpeg" alt="dweb-content-identifier" width="880" height="77"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can visualize this content via a gateway. To interact with the IPFS node in your browser, make sure to install the &lt;a href="https://docs.ipfs.tech/install/ipfs-companion/#prerequisites"&gt;IPFS Companion&lt;/a&gt; extension.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;https://ipfs.io/ipfs/CID
https://ipfs.io/ipfs/QmSSGVRShvLiVcYVRJMwd56CQ1BnD3jTEcSrkWYyPTspr5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, you can make use of &lt;a href="https://docs.ipfs.tech/install/ipfs-desktop/"&gt;IPFS Desktop&lt;/a&gt; to host your content. To understand more, you can check out this &lt;a href="https://docs.ipfs.tech/how-to/websites-on-ipfs/single-page-website/#install-ipfs-desktop"&gt;guide&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pinning website on Pinata
&lt;/h3&gt;

&lt;p&gt;To ensure that your website content is retained and persistent across the IPFS network, you must &lt;a href="https://docs.ipfs.tech/how-to/pin-files/"&gt;pin&lt;/a&gt; it. You used the &lt;code&gt;jsipfs add -r.&lt;/code&gt; command in the previous step to recursively pin your website to your local node. However, it is best practice to pin important content like this to more than one IPFS node to ensure that the data is always accessible and not removed during &lt;a href="https://docs.ipfs.io/concepts/persistence/#garbage-collection"&gt;garbage collection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the purposes of this tutorial, you will pin your dWebsite using Pinata. To begin, you must go to the &lt;a href="https://www.pinata.cloud/"&gt;Pinata website&lt;/a&gt;, sign up, and pin your website using the CID that was previously generated.&lt;/p&gt;

&lt;p&gt;After successfully signing in, you can now pin your content using the &lt;strong&gt;Add File&lt;/strong&gt; button, as seen in the  dashboard below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QXZhVJPG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88j7g217ndhfv3q2m4hm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QXZhVJPG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88j7g217ndhfv3q2m4hm.jpeg" alt="dweb-to-pinata" width="880" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BMvCqjiw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h28hhi7eybomgfa1tkyv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BMvCqjiw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h28hhi7eybomgfa1tkyv.jpeg" alt="dweb-pinned-pinata" width="880" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
The steps for uploading and pinning your website content must be repeated every time you make changes to your files, which is inconvenient. All of the processes listed above can be automated with tools like &lt;a href="https://fleek.co/"&gt;Fleek&lt;/a&gt;. An article about fleek and how to handle automated deployments will be written in the future. Keep an eye out for updates.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What happens now that you have successfully hosted your website content on IPFS and pinned it on Pinata? Take a wild guess.&lt;/p&gt;

&lt;p&gt;You got it! You need to buy a blockchain domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Purchasing Domain on Unstoppable Domain
&lt;/h2&gt;

&lt;p&gt;Blockchain domains are an important layer in the development of a decentralized website. They ensure that dWebsites are completely censorship-resistant, and that content hosted on dStorage is mapped to human-readable names. You will buy domains from Unstoppable Domains in this guide.&lt;/p&gt;

&lt;p&gt;To begin, go to the &lt;a href="https://unstoppabledomains.com/"&gt;UD website&lt;/a&gt;, sign up, and then purchase your desired domain.&lt;/p&gt;

&lt;p&gt;In my case, I used the &lt;strong&gt;"Pay with Crypto"&lt;/strong&gt; option to purchase &lt;a href="http://oxpampam.blockchain"&gt;oxpampam.blockchain&lt;/a&gt;. You may select any option that appears to be suitable to you.&lt;/p&gt;

&lt;p&gt;After successfully purchasing your domain, you can verify your purchase on &lt;a href="https://viewblock.io/unstoppable"&gt;viewblock.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1lsu6-9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x0yr4qya781foxmhiki0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1lsu6-9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x0yr4qya781foxmhiki0.jpeg" alt="dweb-viewblock" width="880" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above, you will see the URL, IPFS hash, owner profile, OpenSea NFT, and the blockchain (Polygon) it was minted on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting IPFS hash on UD
&lt;/h2&gt;

&lt;p&gt;The next step is to map your IPFS hash to the newly purchased domain. In the following steps, you will connect your IPFS hash to UD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:  Navigate to your Domain Dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login to your &lt;strong&gt;UD account&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Account&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;My Domains&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--09P02SJ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rt1elcobpiqbzvmll6np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--09P02SJ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rt1elcobpiqbzvmll6np.png" alt="dweb-UD-My-Account" width="880" height="1073"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gIqkHRLn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d47pirgomtr670a5isfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gIqkHRLn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d47pirgomtr670a5isfk.png" alt="dweb-UD-Domain-name" width="880" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Manage Domains&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Manage&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On successful page load, click &lt;strong&gt;website&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WvMDf5ow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hf7duzjfairvdqazgz4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvMDf5ow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hf7duzjfairvdqazgz4p.png" alt="dweb-UD-website" width="880" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Manage the Website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To attach the IPFS hash to the domain, let us go through the following process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Link Website&lt;/strong&gt; under &lt;strong&gt;Custom website linking&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste the IPFS hash in the input field provided&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Launch Website&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Sign the transactions to update the website hash&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The image below represents what your dashboard will look like after uploading the IPFS hash.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GHII2aVV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kijgk8vjx583p77owd3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GHII2aVV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kijgk8vjx583p77owd3f.png" alt="dweb-final" width="880" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resolving dWebsites in a browser
&lt;/h2&gt;

&lt;p&gt;To confirm that the blockchain domain navigates to your hosted content, you have to paste the blockchain domain into a web browser.&lt;/p&gt;

&lt;p&gt;It’s important to note that, by default, the browser cannot resolve the content in the blockchain domain. Thus the need for a tool such as Unstoppable Extension, developed by Unstoppable Domain Team. This extension is used to access blockchain domains. You can download this extension on both &lt;a href="https://chrome.google.com/webstore/detail/unstoppable-extension-vie/beelkklmblgdljamcmoffgfbdddfpnnl?hl=en-US&amp;amp;authuser=0"&gt;Chrome&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/addon/unstoppable-extension/"&gt;Firefox&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Having installed this extension, you can now access the website by adding &lt;code&gt;http://&lt;/code&gt; as a prefix to the domain name. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An example is  &lt;a href="http://oxpampam.blockchain"&gt;http://oxpampam.blockchain&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Brave browser (for desktop and Android) automatically resolves unstoppable domains, and as such, you don’t need to download any extensions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Websites hosted using IPFS + UD(dWebsite)
&lt;/h2&gt;

&lt;p&gt;The following are examples of websites hosted in a decentralized manner using IPFS and Unstoppable Domains. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;MyEtherWallet: &lt;em&gt;myetherwallet.crypto&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Kyber Network: &lt;em&gt;kyber.crypto&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Ivan On Tech: &lt;em&gt;ivanontech.crypto&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Huddle01: &lt;em&gt;Huddle01.crypto&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Dtube: &lt;em&gt;Dtube.crypto&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is a list of some of the dWebsites on unstoppable domains&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nN6BAROY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/FcEHFf5XoAcKQSp.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--B544w6X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1494097574613057541/gATQxSnP_normal.jpg" alt="unstoppable.nft profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        unstoppable.nft
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @unstoppableweb
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      /5 Here's some inspiration for your Web3 site:&lt;br&gt;&lt;br&gt;- Build a personal blog (TimDraper.crypto)&lt;br&gt;- Launch your NFT (DeadHeads.NFT)&lt;br&gt;- Inspire the future of gaming (bizesports.x)&lt;br&gt;- Build educational content (Hashoshi.crypto)&lt;br&gt;&lt;br&gt;Visit changetheweb.x on Brave to get started! 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:02 PM - 07 Sep 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1567543948805120000" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1567543948805120000" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1567543948805120000" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, you learned how to host a simple static website in a decentralized manner using IPFS and Unstoppable domains. Additionally, we looked at the downsides of traditional web hosting as opposed to decentralized web hosting. By hosting your website in a decentralized manner, your website becomes more resilient, transparent, and censorship-resistant.&lt;/p&gt;

&lt;p&gt;You can take this further by building a multi-page dwebsite. Do share your build. &lt;/p&gt;

&lt;p&gt;For more additional guides on building dWebsites using Unstoppable Domains and IPFS, you can check out these guides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/unstoppabledomains/decentralized-websites"&gt;Unstoppable Domains&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dapps-delivery-guide.readthedocs.io/en/latest/index.html"&gt;DApps Delivery Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.ipfs.tech/how-to/websites-on-ipfs/multipage-website/#prerequisites"&gt;IPFS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>decentralizedwebsites</category>
      <category>ipfswebsitetutorial</category>
    </item>
    <item>
      <title>Quickstart guide to Developer Relations</title>
      <dc:creator>Oxpampam</dc:creator>
      <pubDate>Thu, 22 Dec 2022 11:19:54 +0000</pubDate>
      <link>https://dev.to/oxpampam/quickstart-guide-to-developer-relations-455a</link>
      <guid>https://dev.to/oxpampam/quickstart-guide-to-developer-relations-455a</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;My first encounter with the term “Dev Rel” was on a social platform, Twitter. Talents on this platform share tips, blog posts, and other resources to empower other developers. My offline experience was kind of similar. This was at my first IRL conference, called &lt;a href="https://unstack.africa/"&gt;Unstack Africa&lt;/a&gt;, where great speakers were passionate about educating and giving value to technical talents. &lt;/p&gt;

&lt;p&gt;You will observe that both my offline and online experiences have the same thing in common, which is educating others. Does that mean that Dev-Rel is about educating others? You will  find out in a moment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;DevRel is relatively new, and navigating the space is hard and a bit of a hurdle. As a result, the purpose of this guide is to educate you and provide insights from Dev Rel experts. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  What is Developer Relations?
&lt;/h1&gt;

&lt;p&gt;Developer Relations (also called Dev Rel) is a team within an organization that prioritizes  building relationships with external developers. It focuses on enabling and empowering developers with the right tools to succeed at using a product or technology.&lt;/p&gt;

&lt;p&gt;According to Caroline Lewko, it is the professional practice of engaging with developers as the primary user of a product, generally outside of one’s own company. At this level, DevRel practitioners act as a liaison between the company and the developer community.&lt;/p&gt;

&lt;p&gt;This community is usually a group of individuals who have an interest in the same technology or product. Therefore, it is the work of DevRel to keep the flame of interest burning to the end of retaining them.&lt;/p&gt;

&lt;p&gt;For example, take Paypal - a payment solution that helps people pay online in a simple and safe way,&lt;br&gt;
sets up a developer relations team to enable developers get the most out of their product suite ranging from APIs and SDKs.  You will want to ask what the team will be doing. Let's find out in a moment.&lt;/p&gt;

&lt;h1&gt;
  
  
  What does the Developer Relations team do?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Educate&lt;/strong&gt;: As a devrel practitioner you will be investing a lot of time educating your developer community. By doing this, you'll provide all they need to get their job done. Educating your technical audience might take different forms ranging from writing blogpost, Speaking at an event, hosting an online workshop, creating a video content&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Teaching is a meta-strength in Devrel. It is a multi-faceted role that requires variety of skills e,g writing, speaking, and creating video contents. One good thing is to realize where your strength lies and gain mastery! &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community Building and Engagement&lt;/strong&gt;: This involves consistently keeping in touch with your developer community. This is how relationships are built. A devrel practitioner, to the community is a representative of the company and to the company, represents the community. As a result devrel must invest in the success of its community.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code&lt;/strong&gt;: Because it's a technical product you are building a community around, devrel practitioners must be able to speak and understand the language the developer community speak to be able to engage and educate them. This simply means they must know how to code because more often they would be involved in building demos, sandboxes, workshops, testing out new features et al.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a dev-rel engineer on the Paypal dev-rel team will need to know how to code. Whether JS, Python, or whatever programming language the SDKs or APIs support.&lt;/p&gt;

&lt;h1&gt;
  
  
  Who makes up the Developer Relations team?
&lt;/h1&gt;

&lt;p&gt;Developer Relations is an umbrella of things and as a result requires different talents to focus on certian aspects. The following are the roles likely to be reckoned with in Dev Rel&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer Advocates&lt;/strong&gt;: They’re often building sample apps, live coding, or giving demos, and engaging with the community on a technical level. They sort of have coding experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Ambassadors&lt;/strong&gt;: They need to be able to carry on conversations within and outside the community or ecosystem. As well as answer questions about the technical aspects of your product. This role may not require coding experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer Relations Manager&lt;/strong&gt;: Manages the devrel team, set its strategy and goals. Also makes sure they are not engaging in task relating to other depts such as marketing, sales et all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Writers&lt;/strong&gt;: document and write about the product in a clear and simple approach. &lt;/p&gt;

&lt;h1&gt;
  
  
  How to set yourself up for success
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Some of these pointers here are from &lt;a href="https://twitter.com/TejasKumar_"&gt;Tejas Kumar&lt;/a&gt; session in DXMentorship class.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now that you have a glimpse of what devrel is, what they do and the roles involved. You might consider the following if  you want to jumpstart your career as a devrel practitioner:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Join Communities&lt;/strong&gt;: All this is saying is, engage with your local communities. Meaning start by attending events in your local vicinity, help a fellow community member, or even submit a CFP to share your knowledge about your wins and struggles building a feature or product.  Examples of communities to join &lt;a href="https://gdg.community.dev/gdg-lagos/"&gt;GDG&lt;/a&gt;, &lt;a href="https://t.me/web3bridge"&gt;Web3Bridge&lt;/a&gt;(Web3 enthusiast)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build high quality relationships&lt;/strong&gt;: To navigate through DevRel as a profession, you need to understand building relationships. This relationship, should not  be transactional i.e not because you need help from them but rather because you want to help them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Offer value to your network&lt;/strong&gt;: Be valuable to people in your network. This may range from helping talents solve their bugs, helping devs make their first open source contributions, sharing tips and resources that have helped while starting out. This way you are building authenticity and authority to reckon with.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be open-minded and Data-driven&lt;/strong&gt;: Treat every reactions and outcome as a data to make a better informed decision in your career.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep Upskilling&lt;/strong&gt;: This is a neccessity in every career as its plays a major factor in one’s relevance in the industry. This is same for DevRel, as the field is relatively new and still growing, as a practitioner you need to upskill to stay abreast of new trends and strategies.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Other things to keep in mind
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;You cannot measure DevRel&lt;/strong&gt;: Companies put pressure on the devrel team as to measuring success. The no-brainer here is, the best way to measure devrel is to not measure it. Because your job is to build relationships and this efforts can only be proven overtime. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do DevRel internally&lt;/strong&gt;: The members of your team are developers as a result you need to focus on doing devrel internally first. Listen to their needs, liaise with the product or engineering team to organize seminars explaining the technicalities of the product. This will be beneficial to both the community, junior developers or even new hires.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimize for what you are naturally gifted with&lt;/strong&gt;: Because DevRel is a multi-faceted role, one thing to keep in mind whether you are just starting out, or at the first stage of an interview, or already working as a DevRel engineer is to always optimize for what you are naturally gifted with. For example, you might be naturally convenient and proficient with speaking, optimize this strength. The idea is to master this gift and learn others as you go on in your career.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is DevRel and not DevSell&lt;/strong&gt;: Dev Rel most of the time intersects with other departments such as marketing, Sales et al. It is important to understand that your responsibility as a devrel practitioner is to build relationships and not sell to developers. Selling is the work of the sales team as the name implies and DevRel is about building relationships as implied in its name.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;You must have found out that DevRel is about educating and building high quality relationships with your developer audience. Just like every other field, it is ever growing. You need to keep learning and upskilling to ensure your developer community succeed.&lt;/p&gt;

&lt;p&gt;To learn more about this profession here are some resources or communities to check out.&lt;br&gt;
The list is long but this should give you a headstart.&lt;br&gt;
&lt;a href="https://devrelresourc.es/#getting-started-what-is-developer-relations"&gt;Devrel-resources&lt;/a&gt;&lt;br&gt;
&lt;a href="https://discord.gg/TfRnNGvB"&gt;DXMentorship&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer-advocacy.com/about#about-this-version"&gt;Developer Advocacy Book&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/kenny-io/DevRel-Resources"&gt;Others&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you found this helpful or have any questions, you can drop your comment or reach out to me on &lt;a href="https://twitter.com/Oxpam_pam"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading through. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
