Develop, Design, Host, And Maintain

A Decentralized Website With Avvy Domains

Introduction

In this tutorial you'll learn how to seamlessly create, deploy, and configure a decentralized webstie using GrapesJS, Fleek, GitHub, and Avvy Domains. Avvy Domains provides an address naming system on the Avalanche blockchain which allows you to link your .avax domain to IPFS-hosted content. This ensures your website remains censorship-resistant and decentralized. We'll help you set up an account with GrapesJS, and guide you through GitHub for a seamless deployment to Fleek. Finally, we'll configure your Avvy Domain to point to your IPFS content. By the end of this tutorial you'll have a fully functional decentralized website accessible via your .avax domain.

0.0

Prerequisites

  1. A registered Avvy domain (e.g., webpage.avax).
    1. How To Register A Domain
  2. Little to no knowledge of HTML/CSS (for GrapesJS).
  3. A Core wallet or another EVM-compatible wallet.

1.0

Create a Website with GrapesJS

GrapesJS Introduction

GrapesJS is a web-based, open-source tool designed to make website building easy for everyone - even those without coding knowledge. It offers a user-friendly, drag-and-drop interface where you can create and customize websites by simply dragging elements like text, images, and buttons onto your page. Think of it like a digital canvas where you can visually design and arrange your content, much like using a graphic design tool but for building web pages. GrapesJS provides a variety of pre-built components and templates, allowing you to create professional-looking websites without needing to write a single line of code.

1.1

Set up GrapesJS

  1. Go to the GrapesJS website.
    1. grapesjs.com
  2. Click on the button to start the GrapesJS editor.
  3. grapeJS demo button
  4. Design your website using the drag-and-drop interface.
  5. grapeJS UI/UX
1.2

Download the Website

  1. Once you have completed your design, click on the button in the menu bar at the top of the screen.
  2. grapeJS UI/UX
  3. In the window that displays you can select , in the bottom left corner of the window, to download your website files.
  4. grapeJS export file
  5. Find the zip file you just downloaded in your file system (Windows Explorer, Finder, etc) and open it to reveal your HTML and CSS files.
  6. Create a folder (these are called directories in GitHub) called “src” and put the “index.html” file and CSS folder from Step 1.2.3 into that “src” folder. Your folder structure should mimic the image below.
    1. Folder structure example
    2. grapeJS export file return to Step 2.4.4
      return to Step 2.5.5

2.0

Upload Files to GitHub

GitHub Introduction

GitHub is a web-based platform that allows people to collaborate on projects by managing and sharing files, primarily code, though it's useful for any file type. Think of it as a version control system where you can track changes to your documents, work with others simultaneously, and keep a history of all edits. It's like Google Docs, but for more complex projects, where every change is recorded, and multiple versions of the project can be worked on and merged together seamlessly. It also fosters community interaction through discussions, issue tracking, and collaborative problem-solving.

2.1

Create a GitHub Account

  1. Go to the GitHub website.
    1. github.com
  2. Add an e-mail address, and click the button or sign in with an existing account.
    1. Click here to follow GitHub’s tutorial on creating an account.
    GitHub signup
2.2

Create Repository

  1. Click the button, in the top-right corner of the screen, within the menubar.
  2. create repository return to Step 3.3.3
  3. Click the button, from the dropdown menu, and give it a name relevant to your website.
    1. Choose your repository to be public or private.
    2. Check the box to create a README.md. (optional) ~> About READMEs
    3. Check the box to create a License. (optional) ~> About Licensing
    new repository
2.3

Create a src and css Directory

  1. Click the button to the left of the button.
  2. add file / green code button
  3. Click the button in the dropdown menu that displays.
  4. create new file button
  5. A new page displays. Type “src/” in the “Name your file…” section to the right of your repository name. This will create you a “src” folder in GitHub.
  6. name your HTML file return to Step 3.4.2
  7. Click the new “Name your file…” section and type “css/”. This will create another folder called “css”.
  8. name your CSS file
  9. Click the new “Name your file…” section and name the file “dummy.file”. GitHub does not allow the creation of empty directories so we must create a dummy file until we can upload the HTML/CSS in the coming step.
  10. name your dummy.file
  11. Click the button. A new window displays with another button; click it.
  12. commit changes
  13. The window will disappear. Click the link titled as your repository name.
  14. click repository link name
2.4

Upload HTML File to Repository

  1. Click the directory.
  2. click src directory
  3. Click the button to the left of the button.
  4. click add file
  5. From the dropdown menu, click the button.
  6. click add upload file
  7. Drag and drop the "index.html" file from Step 1.2.4 into the browser or click the "choose your files" link to upload the file from Step 1.2.4.
  8. drag and drop index.html
  9. Below that window is another window titled "Commit changes".
  10. window titled commit changes
  11. In the top section insert a brief description of the upload - ex. uploading HTML file.
  12. insert brief description
  13. Click the button.
2.5

Upload CSS File to Repository

  1. Click the directory.
  2. click src directory
  3. Click the directory.
  4. click css directory
  5. Click the button next to the button.
  6. click add file button
  7. From the dropdown menu, click .
  8. click upload files button
  9. Drag and drop the "styles.css" file from Step 1.2.4 into the browser or click the "choose your files" link to upload the file from Step 1.2.4.
  10. drag and drop styles.css
  11. Below that window is another window titled "Commit Changes".
  12. window titled commit changes
  13. In the top section insert a brief description of the upload - ex. uploading CSS file.
  14. insert brief description
  15. Click the button.

3.0

Upload to Fleek for IPFS Deployment

Fleek Introduction

Fleek is a platform that simplifies the process of creating and hosting websites on the decentralized web. It allows anyone, even those without technical skills, to deploy websites using decentralized technologies like IPFS (InterPlanetary File System) and blockchain. With Fleek you can integrate seamlessly with popular web development frameworks, making it easy to maintain your site while leveraging the benefits of decentralized infrastructure, such as enhanced privacy and control over your data.

3.1

Create an Account on Fleek

  1. Go to the fleek website.
    1. Fleek website
  2. Click the button.
  3. create free account
  4. Sign up for an account with a wallet or email address.
  5. sign up
3.2

Connect GitHub Account

  1. Click the button in the top-right corner of the screen.
  2. add new button
  3. From the dropdown menu, click on the button.
  4. deploy site button
  5. Click the button.
  6. click github button
3.3

Install Fleek App

  1. Click the button.
  2. click install fleek button
  3. A window populates, representing GitHub, suggesting to install & authorize Fleek CI.
  4. install and authorize window
  5. Choose the "Only select repositories" option and select the repository, created in Step 2.2, from the menu.
  6. select Repository
  7. Scroll down, if necessary, and click the button.
  8. install & authorize
3.4

Upload to IPFS with Fleek

  1. Click the button to the right of the repository you want to deploy to IPFS as your website.
  2. click deploy button
  3. The window changes to a new display titled "Configure Site". Change the "Publish Directory" section to "src". This is the folder you created in Step 2.3.3,
  4. change section to src
  5. Click the button
  6. A dashboard will display which provides the status of the initial deployment.
  7. click deploy button
  8. An IPFS hash was generated.
3.5

Configure Fleek for Domain

  1. Click the option in the menubar at the top of the website.
  2. click settings option
  3. A new page displays with a sidebar to the left. Click the option in the sidebar.
  4. click domains option
  5. A window to the right of the sidebar displays titled "Custom Domains". Click the "example.com" section to add your domain.
    1. ex: webpage.avax.sh
    click example.com section
  6. It will check for availability and then confirm in green text below the provided input -
    webpage.avax.sh is available
    .
  7. check availability
  8. Click the button.
  9. custom domain button
  10. A new window displays titled "Set CNAME Record". Here you will notice a "Value" section. Click the icon to copy the link, within the "Value" section, to your clipboard.
    ! keep this window open! !
  11. set cname record return to Step 4.3.4
    return to Step 5.1.1

4.0

Configure Your Avvy Domain

4.1

Connect Your Wallet

  1. Go to Avvy Domains website.
    1. Avvy Domains website
  2. Click the button.
  3. connect your wallet
4.2

Access Avvy Domain Records

  1. Click the button.
  2. connect your wallet
  3. Click the domain of your choice. You are then provided the domain configuration page for that domain.
  4. Look for the section titled "Records".
    1. If this is a new domain then you will need to set the resolver. If your resolver is set, then move forward to Step 4.2.4
    2. Click on the "Set a resolver" link in the "Basic Information" section (not shown in image) or click the "Set a resolver" link in the "Records" section (shown in image).
    3. set a resolver
    4. A new window displays titled "Set Resolver". Change the "Type" section from "None" to "Default Resolver".
    5. change to default resolver
    6. Click the button.
    7. click submit button
    8. Your preferred wallet will display a transaction user interface for you to approve the transaction initiated by clicking the button in the previous step. (A small fee must be paid to make changes to the Avalanche C-Chain).
    9. Click the button to authorize the transaction.
    10. click approve button
    11. Click the button after the transaction has confirmed. Continue to Step 4.2.4.
    12. click close button
  5. Click the "Add a record" link in the section previously mentioned in Step Step 4.2.3.
  6. add a record
4.3

Add DNS CNAME Record

  1. A new window displays titled "Add Record". Two sections appear within the window titled "Type" and "Value" respectively.
  2. add record window
  3. Click the "Type" section and a dropdown menu displays.
  4. clck type section
  5. In the dropdown menu you will notice multiple record types appear. Choose the "DNS CNAME Record" option.
  6. dns cname record
  7. In the "Value" section you will paste the link that was copied from Step 3.5.6
  8. paste link copied in step 4.2.2
  9. Click the button.
  10. submit button
4.4

Transaction Approval

  1. Your preferred wallet will display a transaction user interface asking for you to approve the transaction initiated by clicking the button in the previous step (You must pay a small fee to add data to the Avalanche C-Chain).
  2. Click the button to authorize the transaction, and add the DNS CNAME to your Avvy domain that was chosen in Step 3.5.6
  3. dns cname record

5.0

Deploy .avax Domain

5.1

Return to Fleek Settings

  1. Go back to the Fleek site where you should still see the window from Step 3.5.6.
  2. Click the button.
  3. added it button
  4. It will begin to verify the management request.
  5. Once verification has finished you should see a small, green Active sign next to the respected domain.
  6. green active sign
  7. Click the three dots to the right of the Active sign and a menu displays under it.
  8. click the three dots
  9. Click the button. Your website should load in a new tab.
  10. click visit button
  11. You have just deployed your first .avax domain!