<?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: Lenka</title>
    <description>The latest articles on DEV Community by Lenka (@w3wrds).</description>
    <link>https://dev.to/w3wrds</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%2F133033%2Fe54b373e-0802-48f3-b738-856864db99e3.jpeg</url>
      <title>DEV Community: Lenka</title>
      <link>https://dev.to/w3wrds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/w3wrds"/>
    <language>en</language>
    <item>
      <title>Launch NFTs in minutes - Create and deploy NFT collection on Astar</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Mon, 29 May 2023 12:22:53 +0000</pubDate>
      <link>https://dev.to/apillon/guide-nft-service-create-and-deploy-nft-collection-on-astar-35bp</link>
      <guid>https://dev.to/apillon/guide-nft-service-create-and-deploy-nft-collection-on-astar-35bp</guid>
      <description>&lt;p&gt;&lt;em&gt;With the latest addition to the Apillon NFT Service, you can now deploy NFTs to the Astar Network in a few-click manner.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The latest integration of the Astar Network's smart contracts into the Apillon dashboard comes just days after Moonbeam inaugurated the platform's NFT season.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.apillon.io/apillon-partners-with-astar-to-deliver-multi-chain-smart-contract-connectivity-63d1d5f1e288"&gt;Apillon partners with Astar to deliver multi-chain smart contract connectivity&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this guide, you're taken step-by-step through the process of deploying an NFT collection on the Astar network using the drag-and-drop NFT Service. Low-code, fast, and in just minutes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; At this stage, the process is the same as with deployment on the &lt;a href="https://dev.to/apillon/launch-nfts-in-minutes-pt-2-create-and-deploy-nft-collection-on-moonbeam-4952"&gt;Moonbeam Network&lt;/a&gt; - the only difference being the choice of network (Chain) at the Mint NFTs step.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Things to know before you begin
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How will your NFT collection work?
&lt;/h3&gt;

&lt;p&gt;👉 &lt;strong&gt;Duration:&lt;/strong&gt; As you deploy NFTs on a blockchain, they become immutable and non-deletable. If specified, NFTs could be revoked but not deleted. In case you are just testing and playing around, you might want to use dummy files and not the precious one-of-a-kinds.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Hosting:&lt;/strong&gt; Thanks to Apillon supporting &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#web3-hosting"&gt;Web3 Hosting with Crust and IPFS&lt;/a&gt;, all uploaded contents linked to your NFT collection are stored decentrally, too.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Cost:&lt;/strong&gt; Currently, Apillon services are offered at a freemium plan. Whatever you deploy at this stage remains a part of it and will not be included in upoming paid plans.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Access:&lt;/strong&gt; As you deploy an NFT collection, you make it permanently traceable on the blockchain. You can choose different ways to distribute NFTs to your audience or the public. The Apillon dashboard wizard guides you step-by-step through the process of creation and deployment of an NFT collection, however, you may go down the coding path:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write JavaScript code and logic to unlock the NFTs only at specific custom-set achievements (game rewards, loyalty bonuses, etc.)&lt;/li&gt;
&lt;li&gt;Deploy your website with &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk"&gt;Apillon Web3 Hosting&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Unlock access to your NFTs only for users who achieve a certain level in your app logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;Editability:&lt;/strong&gt; The deployment of an NFT collection via the Apillon NFT Service wizard does not include IPNS metadata mutability and/or gradual releases. You can still incorporate these by manually uploading metadata and NFTs using the Apillon infrastructure.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Network:&lt;/strong&gt; The current release of the NFT Service supports Moonbeam Network (Mainnet), Moonbase (Testnet), and Astar Network. In this guide, the NFT deployment on Astar Network is described.&lt;/p&gt;

&lt;h3&gt;
  
  
  What will you need?
&lt;/h3&gt;

&lt;p&gt;To create an NFT collection on Astar with Apillon, make sure you have the following ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to the Apillon dashboard&lt;/li&gt;
&lt;li&gt;NFT files&lt;/li&gt;
&lt;li&gt;NFT metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn more about how to create NFT files, from AI tools for artistic expression to metadata that defines and describes your NFTs. 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/apillon/launch-nfts-in-minutes-pt-1-generate-nft-art-with-ai-and-get-files-ready-1gd0"&gt;Guide: NFT Service prerequisites - Generate NFT art (with AI) and get files ready&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Now that you have everything prepared, you can deploy a brand new NFT collection in minutes - with its contents stored decentrally and hosted either on a decentralized network or your existing website.&lt;/p&gt;

&lt;p&gt;Let's dive in.&lt;/p&gt;

&lt;p&gt;On the Apillon dashboard, navigate to &lt;strong&gt;Services&lt;/strong&gt; in the menu on the left, and click &lt;strong&gt;NFTs&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;strong&gt;Note:&lt;/strong&gt; In the top right corner, you can see the NFT smart contracts are provided by both Moonbeam and Astar networks. This guide focuses on deploying NFTs on Astar, but a similar process works for both.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If this is your first time working with NFTs on Apillon, click the &lt;strong&gt;"Start creating NFTs"&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0qwVqTQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l3nznf8930qimby2vw74.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0qwVqTQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l3nznf8930qimby2vw74.png" alt="apillon-nft-service-start-creating-nfts-astar" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have already done some NFT work with Apillon, instead, you see the currently deployed collections on your dashboard. In the top right corner, click &lt;strong&gt;"New NFT collection"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b8Ltbbyc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0br4vgn93slvetqw8q7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b8Ltbbyc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0br4vgn93slvetqw8q7p.png" alt="apillon-nft-service-start-creating-nfts-astar-new-nft-collection" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In either case, to launch and deploy an NFT collection, you need to complete three steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Store NFT metadata&lt;/li&gt;
&lt;li&gt;Compose NFTs&lt;/li&gt;
&lt;li&gt;Mint NFTs&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 1: Store NFT metadata
&lt;/h2&gt;

&lt;p&gt;After all the work you have put into designing your NFTs, the last thing you want is for them to &lt;a href="https://blog.apillon.io/why-decentralized-storage-matters-for-nft-metadata-and-your-next-nft-collection-b7b90fc3762"&gt;vanishing from the face of Web3&lt;/a&gt; in case of mishaps. To prevent that, you should store the NFT files - the unique assets &lt;em&gt;and&lt;/em&gt; the data that makes them unique - on the web, and the best way to do it is by ensuring permanent access with decentralized storage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--blWRRN-x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn6gsetkw44aokvvvv39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--blWRRN-x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn6gsetkw44aokvvvv39.png" alt="apillon-nft-service-prepare-metadata" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the dashboard asks, "Would you like to store your NFT metadata in a decentralized way", there are two options (click on either to continue the process):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes, proceed &amp;gt; go to &lt;strong&gt;Step 2&lt;/strong&gt; to upload files and data&lt;/li&gt;
&lt;li&gt;I have metadata online &amp;gt; go to &lt;strong&gt;Step 3&lt;/strong&gt; to source files and set parameters (advanced)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Compose NFTs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Upload NFT metadata
&lt;/h3&gt;

&lt;p&gt;In this step, upload your NFT metadata file in a CSV format - click "Select CSV file". The Apillon platform will automatically create a &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket"&gt;Web3 Storage bucket&lt;/a&gt; in the background and link it to your NFT collection.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👨‍💻 &lt;strong&gt;Advanced:&lt;/strong&gt; If you're a developer with a wider scope of control and experience, you can achieve the same result manually. On the platform under &lt;strong&gt;Storage&lt;/strong&gt;, create a &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket"&gt;Web3 Storage bucket&lt;/a&gt;, upload metadata and, when it's time to deploy your NFT collection, call the metadata URI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fF1OctB0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0j53956rsoallxk3yfv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fF1OctB0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0j53956rsoallxk3yfv7.png" alt="apillon-nft-service-select-csv-file" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once uploaded, the file name appears on the dashboard. Double-check it, and if you unintentionally chose the wrong one, click the delete icon next to it and upload again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--STtc1h-5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzf4dzjlrs0d0v50gha2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--STtc1h-5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzf4dzjlrs0d0v50gha2.png" alt="apillon-nft-service-upload-csv-file" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Proceed”.&lt;/p&gt;

&lt;p&gt;In the pop-up window, select &lt;strong&gt;Metadata attributes&lt;/strong&gt; - the elements that describe your NFTs, and set their format (e.g., a "String" represents text-form values).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b2pYjgIY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ablxztwq5gf3uux0fav6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b2pYjgIY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ablxztwq5gf3uux0fav6.png" alt="apillon-nft-service-metadata-attributes" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; The unchecked elements are still imported but don't function as NFT attributes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Click “Confirm attributes”.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Upload NFT files
&lt;/h3&gt;

&lt;p&gt;Next, it's time to upload the essence of your NFT collection - the one-of-a-kind creations.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;“Upload files”&lt;/strong&gt; and select them from your local storage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BzsknI2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mh63ir0995fh2m1otqcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BzsknI2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mh63ir0995fh2m1otqcy.png" alt="apillon-nft-service-upload-nft-files" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once uploaded, you can see the total number of uploaded files. Double-check if it matches the number of NFT files listed in the CSV metadata record. If it doesn't, the dashboard notifies you of missing files. Delete the uploaded ones and repeat the process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jRPBmzLZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2d3fw44oqv7gpf3uq5kd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jRPBmzLZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2d3fw44oqv7gpf3uq5kd.png" alt="apillon-nft-service-missing-images" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can check how your NFTs would look like - click the "Preview your NFTs" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yABEnQ8l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gz5afb3ls3bdmvxrtvvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yABEnQ8l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gz5afb3ls3bdmvxrtvvi.png" alt="apillon-nft-service-preview-nfts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Preview NFTs
&lt;/h3&gt;

&lt;p&gt;At this step, your NFT collection starts getting shape. Check how everything looks, navigate through pages if there are multiple, and verify the right files are displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vzrpsyof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dzfv1m0nxyj7tw9pinj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vzrpsyof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dzfv1m0nxyj7tw9pinj.png" alt="apillon-nft-service-preview-nfts-example" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also switch to a list view in the top right corner and see whether the CSV file was parsed correctly with no mismatches between NFT files and their metadata.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---rO1QXl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvyan48mwuxnz0c90dvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---rO1QXl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvyan48mwuxnz0c90dvb.png" alt="apillon-nft-service-table-list-view" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; A mismatch could occur due to errors in the metadata CSV register. Ensure the order of files in the spreadsheet and the file names match the files you uploaded.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If everything looks good, continue with the process or return if you wish to change something.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; You can edit anything at this or earlier steps. But once you deploy your NFTs to the blockchain, they will remain there permanently. To keep metadata editable, you can only do it by manually uploading it to Apillon Web3 Storage with IPNS.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, you've made it to the last step - deploying your NFT collection on the blockchain and minting your unique assets on the Astar Network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Mint NFTs
&lt;/h2&gt;

&lt;p&gt;Here, you determine the fine details of your collection, including name, symbol, and behavior.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; The process is similar whether you upload the files and metadata following the NFT Service wizard or source it online. In the latter case, you should also provide the metadata base URI and extension for Apillon to source data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3.1 Name your collection
&lt;/h3&gt;

&lt;p&gt;To easily find your NFT collection and allow your audience to immediately recognize your work, choose a name for it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aob7S4TE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dkovfe70mz7h9fzqrjkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aob7S4TE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dkovfe70mz7h9fzqrjkw.png" alt="apillon-nft-service-start-creating-nfts-astar-name-collection-choose-astar-network" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Enter a &lt;strong&gt;Name&lt;/strong&gt; that speaks to you and describes what the collection is about.&lt;/p&gt;

&lt;p&gt;👉 Enter a &lt;strong&gt;Symbol&lt;/strong&gt; that acts as a collection's token name on the blockchain. Typically, it consists of 3 or 4 letters that sum up or refer to the name.&lt;/p&gt;

&lt;p&gt;👉 On the dropdown, select the &lt;strong&gt;Network (Chain)&lt;/strong&gt; to deploy your collection. Choose Astar (Mainnet).&lt;/p&gt;

&lt;p&gt;Double-check the inputs and click “Proceed”.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Behavior
&lt;/h3&gt;

&lt;p&gt;This is where you give your NFT collection a personality and determine how it behaves in terms of supplying its contents to NFT owners.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--91nUMD-u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcp81kakvhx50qu003in.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--91nUMD-u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcp81kakvhx50qu003in.png" alt="apillon-nft-service-start-creating-nfts-astar-behavior" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Total supply&lt;/strong&gt; refers to your collection's maximum supply of NFTs. If it contains a limited number of NFTs, enter the number under &lt;strong&gt;How many?&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 The &lt;strong&gt;Revokable&lt;/strong&gt; function allows the collection owner (you) to revoke NFT(s) at any point in time. This is a good option for limited-time NFTs, such as achievement badges or exclusive brand campaigns. Unrevokable NFTs live permanently on the blockchain.&lt;/p&gt;

&lt;p&gt;👉 By choosing &lt;strong&gt;Soulbound&lt;/strong&gt;, your NFTs become untradeable, as they cannot leave the wallet they were deposited into and always remain tied to the originator's (your) wallet address.&lt;/p&gt;

&lt;p&gt;👉 To collect &lt;strong&gt;royalties&lt;/strong&gt; from your NFTs, enter your or the recipient's wallet address, and set the royalties fees in %.&lt;/p&gt;

&lt;p&gt;👉 If you want your collection to be released at a certain date in the future, choose &lt;strong&gt;Drop&lt;/strong&gt;. Your NFT collection will become publicly available for users to mint and purchase NFTs at the specified date and at the specified price. To avoid having to pay for your own NFTs, set the number of NFTs you want to &lt;strong&gt;Reserve&lt;/strong&gt; for yourself and mint before the drop. If you don't choose drop, only you will be able to mint NFTs for either yourself or others.&lt;/p&gt;

&lt;p&gt;Double-check the set parameters. To preview and start deploying your NFT collection, click &lt;strong&gt;"Proceed"&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Preview and deploy
&lt;/h3&gt;

&lt;p&gt;It's time to deploy your first Apillon-made NFT collection to the Astar Network. We advise you to review everything one last time.&lt;/p&gt;

&lt;p&gt;Swipe through NFTs, and if everything looks fine, you're welcome to inscribe your works of art permanently on the blockchain. Click “Deploy to blockchain”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SlPYktGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13rg9temtp5njy07avc1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SlPYktGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13rg9temtp5njy07avc1.png" alt="apillon-nft-service-nft-collection-preview" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since this is a point of no return, you should double-confirm your decision.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NhK8NP1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gefe7l1zmdymdxb3uco7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NhK8NP1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gefe7l1zmdymdxb3uco7.png" alt="apillon-nft-service-w3-warn" width="449" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Deploy NFT collection” again, and wait for Apillon to do its magic.&lt;/p&gt;

&lt;p&gt;Soon after, your first NFT collection on Astar with Apillon is successfully deployed.&lt;/p&gt;

&lt;p&gt;On the next screen, you can view the transaction on the &lt;a href="https://astar.subscan.io/"&gt;Astar blockchain explorer&lt;/a&gt; or see its contents in your newly created bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3G_0DUFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bxu2213e97dx5hreq1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3G_0DUFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bxu2213e97dx5hreq1i.png" alt="apillon-nft-service-blockchain-explorer-newly-created-bucket" width="702" height="52"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 Display on the internet
&lt;/h3&gt;

&lt;p&gt;Now that your NFT collection is deployed on Astar, you can check the transaction on the &lt;a href="https://astar.subscan.io/"&gt;blockchain explorer&lt;/a&gt; linked at the bottom.&lt;/p&gt;

&lt;p&gt;To display NFTs in all their beauty (beyond the transaction hash) and -  more importantly - to make them tradeable and shareable, you should display them on a website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jXOo6kER--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mubnku0f3lh3vcuum8kl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jXOo6kER--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mubnku0f3lh3vcuum8kl.png" alt="apillon-nft-service-display-on-internet" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As soon as the NFT collection is deployed on the blockchain, an Apillon website template displays your collection by reading its metadata.&lt;/p&gt;

&lt;p&gt;To make it yours, you have two options: create a decentrally hosted website by forking the template on GitHub, or simply integrate the code into your existing website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Fork Apillon NFT website template&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the easiest way to display your NFTs. Use Apillon static website template that reads your NFT metadata and host it on a decentralized network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Av9diAUr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgkx1l5k48ojn3zr43z6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Av9diAUr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgkx1l5k48ojn3zr43z6.png" alt="apillon-nft-service-collection-website-template" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This static website is written in HTML and, thanks to its simplicity, represents a great starting point. You can customize it to suit your brand's or NFT collection image. Click “Create website to display NFTs”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z9wG8Sw9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r112gr18uwa1gfy3bms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z9wG8Sw9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r112gr18uwa1gfy3bms.png" alt="apillon-nft-service-create-website-to-display-nfts-cta" width="541" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you're taken to the &lt;a href="https://github.com/Apillon-web3/nft-template"&gt;Apillon GitHub repository&lt;/a&gt; to create a fork of the website template.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eExhk9bt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3njzoag3qafffww5h61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eExhk9bt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3njzoag3qafffww5h61.png" alt="apillon-nft-service-github-template-fork" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use the template and simply update the js/env.js file with your addresses. On the list of NFT collections, find &lt;strong&gt;Contract address&lt;/strong&gt;, and copy it to the clipboard.&lt;/p&gt;

&lt;p&gt;In GitHub, click the &lt;strong&gt;Code&lt;/strong&gt; button and then &lt;strong&gt;"Download ZIP"&lt;/strong&gt;. In your visual code editor, paste the address of your NFT website, and save.&lt;/p&gt;

&lt;p&gt;Once done, run locally and redeploy with different functionalities to &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#web3-hosting"&gt;Apillon Web3 Hosting&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LK4YsbYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fz4uz8oh6wiqmoh53ejv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LK4YsbYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fz4uz8oh6wiqmoh53ejv.png" alt="apillon-nft-service-github-template-download-zip" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Integrate and mint NFT collection on your website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you prefer bringing your NFT collection to your existing website, wherever it is hosted, even centrally, feel free to do so.&lt;/p&gt;

&lt;p&gt;Click “Display them on your existing website”. Again, you use the code from &lt;a href="https://github.com/Apillon-web3/nft-template"&gt;Apillon GitHub&lt;/a&gt;, and integrate it to your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LfoYTSDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/al2hg6rot06yw586b6d8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LfoYTSDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/al2hg6rot06yw586b6d8.png" alt="apillon-nft-service-display-nfts-on-your-existing-website-cta" width="469" height="43"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Mint NFTs
&lt;/h3&gt;

&lt;p&gt;Finally, to display your NFTs on your website, you should mint them.&lt;/p&gt;

&lt;p&gt;On the list of NFT collections on the Apillon dashboard, you can see their details: the chosen network (&lt;strong&gt;Chain&lt;/strong&gt;), &lt;strong&gt;Collection symbol&lt;/strong&gt; and &lt;strong&gt;Name&lt;/strong&gt;, &lt;strong&gt;Contract address&lt;/strong&gt; (copy and paste it into &lt;a href="https://astar.subscan.io/"&gt;blockchain explorer&lt;/a&gt; to verify), and status (e.g., "Failed", "Deploying", or "Deployed"). You can also find the &lt;strong&gt;Mint&lt;/strong&gt; price and the number of &lt;strong&gt;Reserved&lt;/strong&gt; NFTs.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Minted/Max supply&lt;/strong&gt;, you can see how many of the deployed NFTs were actually minted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k0MoNmK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/augo9z3ug0866qj4kp2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k0MoNmK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/augo9z3ug0866qj4kp2b.png" alt="apillon-nft-service-start-creating-nfts-astar-mint-status" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To do more actions in your NFT collection, minting included, click on the collection of choice.&lt;/p&gt;

&lt;p&gt;Again, the &lt;strong&gt;Chain ID&lt;/strong&gt; indicates the network where the collection was deployed, and the &lt;strong&gt;Transaction hash&lt;/strong&gt; lets you explore its status on the blockchain explorer.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Transaction type&lt;/strong&gt;, you can see the initiated action for the contracts, and its &lt;strong&gt;Status&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If everything looks good, go to &lt;strong&gt;Actions&lt;/strong&gt; in the top right corner, and click &lt;strong&gt;Mint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oTjDFHYm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sggu1pfu8yani2go6qnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oTjDFHYm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sggu1pfu8yani2go6qnm.png" alt="apillon-nft-service-start-creating-nfts-astar-mint-nfts" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By minting NFTs, they will become visible on your website and linked to your wallet or the one you specified in the settings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FcizPiT0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xch8heatlcz6qybh7rms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FcizPiT0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xch8heatlcz6qybh7rms.png" alt="apillon-nft-service-mint-nfts-pop-up" width="353" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the code you find on Apillon GitHub, you can simply integrate it into your website.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.6 Transfer ownership
&lt;/h3&gt;

&lt;p&gt;If you decide to move NFT ownership to another wallet, simply choose it under the &lt;strong&gt;Actions&lt;/strong&gt; drop-down, and enter the wallet address into the pop-up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VJwn6Lbo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x2w3xd15k4xwlg6zk87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VJwn6Lbo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x2w3xd15k4xwlg6zk87.png" alt="apillon-nft-service-start-creating-nfts-astar-transfer-ownership" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6rs3g-WH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u77vk8fbj0s2gnkhjakd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6rs3g-WH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u77vk8fbj0s2gnkhjakd.png" alt="apillon-nft-service-transfer-ownership-pop-up" width="352" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Long live NFTs
&lt;/h2&gt;

&lt;p&gt;Done! You're now a proud owner of your NFT collection, deployed permanently on the Astar Network.&lt;/p&gt;

&lt;p&gt;List them on marketplaces such as &lt;a href="https://tofunft.com/"&gt;tofuNFT&lt;/a&gt;, display them locally on your website or dapp, or share them with your audience and collectors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/apillon"&gt;Let us know&lt;/a&gt; how it went, share your unique digital works of art with the Apillon and Astar  communities, and inspire others to do the same.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T4kgEAlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h0rub7w5tgo30z4c9jo2.png" alt="apillon-start-building-cta" width="199" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://blog.apillon.io/guide-nft-service-create-and-deploy-nft-collection-on-astar-3d6674994b0f"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Launch NFTs in minutes - Create and deploy NFT collection on Moonbeam</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Fri, 19 May 2023 09:41:12 +0000</pubDate>
      <link>https://dev.to/apillon/launch-nfts-in-minutes-pt-2-create-and-deploy-nft-collection-on-moonbeam-4952</link>
      <guid>https://dev.to/apillon/launch-nfts-in-minutes-pt-2-create-and-deploy-nft-collection-on-moonbeam-4952</guid>
      <description>&lt;p&gt;&lt;em&gt;In this guide, you will learn step-by-step how to go from raw data and files to a permanently deployed NFT collection on the Moonbeam network in just a few steps.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The recently released integration of the Moonbeam Network’s smart contracts into the Apillon dashboard has brought about the first use case: a few-step deployment of an NFT collection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.apillon.io/make-your-own-nft-collection-in-minutes-brought-to-moonbeam-by-apillon-538fdf34fc5"&gt;Make your own NFT collection in minutes - brought to Moonbeam by Apillon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read on to learn how to deploy your first NFT collection on the Moonbeam network using the drag-and-drop NFT Service on the Apillon dashboard without having to master the Web3 environment and specific protocols.&lt;/p&gt;




&lt;h2&gt;
  
  
  Things to know before you begin
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How will your NFT collection work?
&lt;/h3&gt;

&lt;p&gt;👉 &lt;strong&gt;Duration:&lt;/strong&gt; Deployment on blockchain makes your NFT collection immutable and non-removable. If specified, some NFTs could be made revokable but not deleted. If you are just testing, you might want to play with dummy files and not final ones.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Hosting:&lt;/strong&gt; Apillon supports Web3 Hosting with Crust and IPFS, so all the contents uploaded in the process of creating an NFT collection will be stored decentrally, too.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Cost:&lt;/strong&gt; Apillon currently offers all services in a freemium plan. Whatever you deploy in this stage remains a part of it and will not be part of future paid plans.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Access:&lt;/strong&gt; Deployment of an NFT collection makes it permanently traceable on the blockchain. When it comes to distributing NFTs, you can opt for different ways of sharing them with the public. Even though the initial Apillon wizard guides you step-by-step through the creation of an NFT collection, as a developer, you may still utilize the following recipe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write your JavaScript code and logic to hide the NFTs behind specific achievements (game rewards, loyalty rewards, etc.)&lt;/li&gt;
&lt;li&gt;Deploy your website with Apillon Web3 Hosting&lt;/li&gt;
&lt;li&gt;Make NFTs accessible only to users who achieve some level in your app logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;Editability:&lt;/strong&gt; Deployment of NFT collection via the Apillon NFT service wizard does not support IPNS metadata mutability and gradual releases. They can be achieved by manually building metadata and NFTs using the Apillon infrastructure.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Network:&lt;/strong&gt; The current release of the NFT Service initially support Moonbeam Network (Mainnet) and Moonbase (Testnet). In upcoming versions, more network options will be made available.&lt;/p&gt;

&lt;h3&gt;
  
  
  What will you need?
&lt;/h3&gt;

&lt;p&gt;To create your first NFT collection with Apillon, you will need the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to the Apillon dashboard&lt;/li&gt;
&lt;li&gt;NFT files&lt;/li&gt;
&lt;li&gt;NFT metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn more about how to compile NFT files, from AI-generated content to metadata that defines them. 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/apillon/launch-nfts-in-minutes-pt-1-generate-nft-art-with-ai-and-get-files-ready-1gd0"&gt;Launch NFTs in minutes Pt. 1 - Generate NFT art with AI and get files ready&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Now that you have everything at hand, your NFT collection could go live in a matter of minutes — stored decentrally, yours to host either on a decentralized network or with your existing website.&lt;/p&gt;

&lt;p&gt;Let’s get started.&lt;/p&gt;

&lt;p&gt;Go to the Apillon dashboard, navigate to Services in the menu on the left, and find NFTs. Click “Start creating NFTs”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wDKtKuR1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iu3t7nyatpwrv8x0pj00.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wDKtKuR1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iu3t7nyatpwrv8x0pj00.png" alt="apillon-nft-service-start-creating-nfts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The whole process of launching an NFT collection with Apillon consists of three steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Store NFT metadata&lt;/li&gt;
&lt;li&gt;Compose NFTs&lt;/li&gt;
&lt;li&gt;Mint NFTs&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 1: Store NFT metadata
&lt;/h2&gt;

&lt;p&gt;To prevent your NFTs from &lt;a href="https://blog.apillon.io/why-decentralized-storage-matters-for-nft-metadata-and-your-next-nft-collection-b7b90fc3762"&gt;vanishing from the face of Web3&lt;/a&gt;, the NFT files — the unique assets and the data that makes them unique — need to be stored on the web, and the best way to ensure permanent access is by storing them in a decentralized way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--blWRRN-x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn6gsetkw44aokvvvv39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--blWRRN-x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn6gsetkw44aokvvvv39.png" alt="apillon-nft-service-prepare-metadata" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the dashboard asks, “Would you like to store your NFT metadata in a decentralized way”, you have two options (click on either to continue the process):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes, proceed &amp;gt; continue to &lt;strong&gt;Step 2&lt;/strong&gt; to upload files and data&lt;/li&gt;
&lt;li&gt;I have metadata online &amp;gt; continue to &lt;strong&gt;Step 3&lt;/strong&gt; to source files and set parameters (advanced)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Compose NFTs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Upload NFT metadata
&lt;/h3&gt;

&lt;p&gt;Click or drag and drop your CSV file. The platform will automatically create a &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket"&gt;Web3 Storage bucket&lt;/a&gt; in the background and connect it to your NFT collection.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👨‍💻 &lt;strong&gt;Advanced:&lt;/strong&gt; If you’re a developer with a wider scope of control, you can achieve the same by manually creating a &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket"&gt;Web3 Storage bucket&lt;/a&gt;, uploading metadata and calling the metadata URI in the NFT collection deployment process.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fF1OctB0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0j53956rsoallxk3yfv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fF1OctB0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0j53956rsoallxk3yfv7.png" alt="apillon-nft-service-select-csv-file" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, the name of the uploaded file appears on the dashboard. If you mistakenly chose the wrong one, click the delete icon and do it all over.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--STtc1h-5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzf4dzjlrs0d0v50gha2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--STtc1h-5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzf4dzjlrs0d0v50gha2.png" alt="apillon-nft-service-upload-csv-file" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Proceed”.&lt;/p&gt;

&lt;p&gt;In the Metadata attributes pop-up window, select which metadata elements would serve as attributes of NFTs, and choose their format (e. g., a “String” represents text-form values).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b2pYjgIY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ablxztwq5gf3uux0fav6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b2pYjgIY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ablxztwq5gf3uux0fav6.png" alt="apillon-nft-service-metadata-attributes" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; The unchecked elements are still imported but don’t work as NFT attributes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Click “Confirm attributes”.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Upload NFT files
&lt;/h3&gt;

&lt;p&gt;Now, it’s time to upload the meat and potatoes of your NFT collection.&lt;/p&gt;

&lt;p&gt;Click “Upload files” and choose them from your local storage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BzsknI2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mh63ir0995fh2m1otqcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BzsknI2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mh63ir0995fh2m1otqcy.png" alt="apillon-nft-service-upload-nft-files" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once uploaded, the total number of uploaded files appears. If you failed to import the same number of NFT files as included in the CSV metadata record, the dashboard notices you of missing files. Delete the uploaded ones and upload again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jRPBmzLZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2d3fw44oqv7gpf3uq5kd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jRPBmzLZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2d3fw44oqv7gpf3uq5kd.png" alt="apillon-nft-service-missing-images" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go and check how your NFTs would look like — click “Preview your NFTs”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yABEnQ8l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gz5afb3ls3bdmvxrtvvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yABEnQ8l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gz5afb3ls3bdmvxrtvvi.png" alt="apillon-nft-service-preview-nfts" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Preview NFTs
&lt;/h3&gt;

&lt;p&gt;Check how the collection looks, navigate through pages if there are multiple, and confirm it displays the correct files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vzrpsyof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dzfv1m0nxyj7tw9pinj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vzrpsyof--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dzfv1m0nxyj7tw9pinj.png" alt="apillon-nft-service-preview-nfts-example" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the top right corner, you can switch to the list view to see whether the CSV file was parsed correctly and that there are no mismatches between NFT files and their metadata.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---rO1QXl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvyan48mwuxnz0c90dvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---rO1QXl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvyan48mwuxnz0c90dvb.png" alt="apillon-nft-service-table-list-view" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; If there is a mismatch, it could be due to errors in the metadata CSV register, so please make sure the order of files in the spreadsheet and the file names match the uploaded files.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If everything is ok, proceed with the process, or return if you want to change something.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; You can edit anything at this or earlier steps. But once you deploy your NFTs to the blockchain, they remain there permanently. If you want to keep metadata editable, you can only do it by manually uploading it to Web3 Storage with IPNS.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, time for the last step — deploying your NFT collection on the blockchain and minting your unique assets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Mint NFTs
&lt;/h2&gt;

&lt;p&gt;In this step, set the fine details of your collection, including name, symbol, and behavior.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; The process is similar whether you uploaded the files and metadata following the NFT Service wizard or sourced it online. In the latter case, you should also provide the metadata base URI and extension for Apillon to source data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3.1 Name your collection
&lt;/h3&gt;

&lt;p&gt;Your collection needs a name to stand out among many and be easily searchable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_PH5YKSU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/acgx60wcj18m3xpgg27n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_PH5YKSU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/acgx60wcj18m3xpgg27n.png" alt="apillon-nft-service-name-collection" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Enter the &lt;strong&gt;Name&lt;/strong&gt; you want for your collection — here, the sky is the limit.&lt;/p&gt;

&lt;p&gt;👉 Enter a &lt;strong&gt;Symbol&lt;/strong&gt; that will act as a token name on the blockchain for the collection. It normally consists of 3 or 4 letters that sum up or refer to its name.&lt;/p&gt;

&lt;p&gt;👉 On the dropdown, select the &lt;strong&gt;Network (Chain)&lt;/strong&gt; where you want to deploy your collection. At this stage, you can choose either Moonbeam (Mainnet) to deploy in production mode or Moonbase (Testnet) to deploy in a test environment. In upcoming versions of the platform, more network choices will be available.&lt;/p&gt;

&lt;p&gt;Double-check the inputs and click “Proceed”.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Behavior
&lt;/h3&gt;

&lt;p&gt;Here, you mold the personality of your NFT collection and determine how it should behave in terms of supplying its contents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZAD1QIrU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sewivkvx5h40pnxba92d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZAD1QIrU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sewivkvx5h40pnxba92d.png" alt="apillon-nft-service-collection-behavior" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Total supply&lt;/strong&gt; refers to the maximum supply of NFTs in your collection. If it holds a limited number of NFTs, enter the number under How many?&lt;/p&gt;

&lt;p&gt;👉 The &lt;strong&gt;Revokable&lt;/strong&gt; function lets the collection owner (you) revoke NFT(s) at any point in time. This comes in handy for limited-time NFTs, such as achievement badges in brand campaigns. Unrevokable NFTs live permanently on the blockchain.&lt;/p&gt;

&lt;p&gt;👉 With &lt;strong&gt;Soulbound&lt;/strong&gt;, you can make your NFTs untradeable. Soulbound NFTs cannot leave the wallet they were deposited into and always remain tied to the originator’s wallet address.&lt;/p&gt;

&lt;p&gt;👉 To collect &lt;strong&gt;royalties&lt;/strong&gt; from your NFTs, enter your or the recipient’s wallet address, and set the royalties fees in %.&lt;/p&gt;

&lt;p&gt;👉 For collections with postponed releases, you can choose &lt;strong&gt;Drop&lt;/strong&gt;. This makes your NFT collection publicly available for users to mint and purchase NFTs after the specified date and at the specified price. To avoid having to pay for your own NFTs, enter the number of NFTs you’d like to Reserve for yourself and mint before the drop. Without drop, only you can mint NFTs for either yourself or others.&lt;/p&gt;

&lt;p&gt;Double-check everything and click “Proceed” to preview and start deploying your collection.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Preview and deploy
&lt;/h3&gt;

&lt;p&gt;Before deploying your first Apillon-made NFT collection to the Moonbeam Network, this is your final chance to review everything.&lt;/p&gt;

&lt;p&gt;Swipe through NFTs, and if everything looks good, it’s time to inscribe your creations permanently on the blockchain. Click “Deploy to blockchain”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SlPYktGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13rg9temtp5njy07avc1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SlPYktGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13rg9temtp5njy07avc1.png" alt="apillon-nft-service-nft-collection-preview" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since this is a point of no return, you’re prompted to double-confirm your decision before deploying your NFT collection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NhK8NP1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gefe7l1zmdymdxb3uco7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NhK8NP1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gefe7l1zmdymdxb3uco7.png" alt="apillon-nft-service-w3-warn" width="449" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Deploy NFT collection” again, and wait for the Web3 magic to happen.&lt;/p&gt;

&lt;p&gt;In a few seconds, you can give yourself a pat on the back — your first NFT collection with Apillon is successfully deployed!&lt;/p&gt;

&lt;p&gt;On the next screen, you can view the transaction on blockchain explorer or see its contents in your newly created bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3G_0DUFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bxu2213e97dx5hreq1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3G_0DUFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bxu2213e97dx5hreq1i.png" alt="apillon-nft-service-blockchain-explorer-newly-created-bucket" width="702" height="52"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 Display on the internet
&lt;/h3&gt;

&lt;p&gt;Now that you have deployed your NFT collection on the blockchain, you can view the transaction on the blockchain explorer linked at the bottom.&lt;/p&gt;

&lt;p&gt;To display NFTs in all their glory (beyond the transaction hash) and make them tradeable and shareable, your should showcase them on a website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jXOo6kER--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mubnku0f3lh3vcuum8kl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jXOo6kER--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mubnku0f3lh3vcuum8kl.png" alt="apillon-nft-service-display-on-internet" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the NFT collection is deployed, you will automatically be presented with a finished Apillon website template that can read your NFT metadata and display your collection.&lt;/p&gt;

&lt;p&gt;Here, you have two options: you can either create a decentrally hosted website by forking the template on GitHub, or simply integrate the code into your existing website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Fork Apillon NFT website template&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The easiest way to display your NFTs is to create a website for your NFT collection using Apillon static website template and host it on a decentralized network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Av9diAUr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgkx1l5k48ojn3zr43z6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Av9diAUr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgkx1l5k48ojn3zr43z6.png" alt="apillon-nft-service-collection-website-template" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This static website written in html is fairly simple and represents a great starting point, as you can customize it to best suit your NFT collection website. Click “Create website to display NFTs”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z9wG8Sw9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r112gr18uwa1gfy3bms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z9wG8Sw9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r112gr18uwa1gfy3bms.png" alt="apillon-nft-service-create-website-to-display-nfts-cta" width="541" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The button takes you to &lt;a href="https://github.com/Apillon-web3/nft-template"&gt;Apillon GitHub repository&lt;/a&gt;, where you can create a new fork of the template.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eExhk9bt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3njzoag3qafffww5h61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eExhk9bt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3njzoag3qafffww5h61.png" alt="apillon-nft-service-github-template-fork" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can use the template and simply update the js/env.js file with your own addresses. Find the &lt;strong&gt;Contract address&lt;/strong&gt; on the Apillon dashboard on the list of NFT collections, and copy it to the clipboard.&lt;/p&gt;

&lt;p&gt;In GitHub, under the &lt;strong&gt;Code&lt;/strong&gt; button, click &lt;strong&gt;Download ZIP&lt;/strong&gt;. In your visual code editor, paste the address of your NFT website, and save.&lt;/p&gt;

&lt;p&gt;Once done, run locally and redeploy with different functionalities to &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#web3-hosting"&gt;Apillon Web3 Hosting&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LK4YsbYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fz4uz8oh6wiqmoh53ejv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LK4YsbYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fz4uz8oh6wiqmoh53ejv.png" alt="apillon-nft-service-github-template-download-zip" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Integrate and mint NFT collection on your website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you prefer having your NFT collection displayed on your existing website, wherever it is hosted, even centrally, you can do so, too.&lt;/p&gt;

&lt;p&gt;Click “Display them on your existing website”. Again, you use the code from Apillon GitHub, and integrate it to your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LfoYTSDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/al2hg6rot06yw586b6d8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LfoYTSDE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/al2hg6rot06yw586b6d8.png" alt="apillon-nft-service-display-nfts-on-your-existing-website-cta" width="469" height="43"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Mint NFTs
&lt;/h3&gt;

&lt;p&gt;To make your NFTs appear in all their glory on your website, you should mint them.&lt;/p&gt;

&lt;p&gt;On the Apillon dashboard, you can see the details of the deployed NFT collection: &lt;strong&gt;Collection symbol&lt;/strong&gt; and &lt;strong&gt;name&lt;/strong&gt;, &lt;strong&gt;Contract address&lt;/strong&gt; (copy and paste it into &lt;a href="https://moonscan.io/"&gt;blockchain explorer&lt;/a&gt; to verify), and its status (e. g., “Failed”, or “Deployed”). There is also &lt;strong&gt;Mint&lt;/strong&gt; price and the number of &lt;strong&gt;Reserved&lt;/strong&gt; NFTs.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Minted/Max supply&lt;/strong&gt;, you can see how many of the deployed NFTs were actually minted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WwtK6svQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvik48vcju94g9dtomle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WwtK6svQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvik48vcju94g9dtomle.png" alt="apillon-nft-service-collection-details" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To do more actions, minting included, and see more details, click on the &lt;strong&gt;Collection name&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the list of details, the &lt;strong&gt;Chain ID&lt;/strong&gt; indicates the network the collection was deployed on, together with &lt;strong&gt;Transaction hash&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Transaction type&lt;/strong&gt;, you can see the initiated action for the contracts, and its &lt;strong&gt;Status&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If everything looks fine, go to &lt;strong&gt;Actions&lt;/strong&gt; in the top right corner, and choose to &lt;strong&gt;Mint&lt;/strong&gt; your NFTs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vMXE_J0l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nycal2w1ahfotca60cob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vMXE_J0l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nycal2w1ahfotca60cob.png" alt="apillon-nft-service-mint-nfts" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you mint your NFTs, you will bring your collection to life linked to your wallet and visible on your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FcizPiT0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xch8heatlcz6qybh7rms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FcizPiT0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xch8heatlcz6qybh7rms.png" alt="apillon-nft-service-mint-nfts-pop-up" width="353" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the code from GitHub, you can simply integrate it to your website.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.6 Transfer ownership
&lt;/h3&gt;

&lt;p&gt;To transfer ownership to another wallet, simply click it under the Actions drop down, and enter the wallet address into the pop-up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QOoEiNVu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/osllckdjeinvfbk0tnso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QOoEiNVu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/osllckdjeinvfbk0tnso.png" alt="apillon-nft-service-transfer-ownership" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6rs3g-WH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u77vk8fbj0s2gnkhjakd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6rs3g-WH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u77vk8fbj0s2gnkhjakd.png" alt="apillon-nft-service-transfer-ownership-pop-up" width="352" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Long live NFTs
&lt;/h2&gt;

&lt;p&gt;Well, that’s it. You’ve made it to the end and are now a proud owner of your first NFT collection on the Moonbeam Network!&lt;/p&gt;

&lt;p&gt;List them on marketplaces such as &lt;a href="https://tofunft.com/"&gt;tofuNFT&lt;/a&gt;, display them locally on your website or dapp, or share them with intended recipients.&lt;/p&gt;

&lt;p&gt;The sky is the limit! &lt;a href="https://twitter.com/apillon"&gt;Let us know&lt;/a&gt; how it went, share your precious NFTs with the Apillon and Moonbeam communities, and inspire other to follow your footsteps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T4kgEAlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h0rub7w5tgo30z4c9jo2.png" alt="apillon-start-building-cta" width="199" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://blog.apillon.io/guide-nft-service-pt-2-create-and-deploy-nft-collection-on-moonbeam-2d7eedf79756"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Launch NFTs in minutes (set up) — Generate NFT art with AI and get files ready</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Fri, 19 May 2023 09:40:16 +0000</pubDate>
      <link>https://dev.to/apillon/launch-nfts-in-minutes-pt-1-generate-nft-art-with-ai-and-get-files-ready-1gd0</link>
      <guid>https://dev.to/apillon/launch-nfts-in-minutes-pt-1-generate-nft-art-with-ai-and-get-files-ready-1gd0</guid>
      <description>&lt;p&gt;&lt;em&gt;In the first part of the guide through NFTs with Apillon, you will learn how to prepare your files for a smooth deployment of your NFT collection.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The recently released integration of the Moonbeam Network’s smart contracts into the Apillon dashboard has brought about the first use case: a few-step creation of an NFT collection on this EVM-compatible parachain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.apillon.io/make-your-own-nft-collection-in-minutes-brought-to-moonbeam-by-apillon-538fdf34fc5"&gt;Make your own NFT collection in minutes - brought to Moonbeam by Apillon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This guide takes you through the prerequisites and main elements that will form your NFT collection.&lt;/p&gt;




&lt;p&gt;In its most simplified sense, NFTs are composed of two parts: what you see as a unique asset (a digital file) and what defines it in the background (its metadata).&lt;/p&gt;

&lt;p&gt;You should have both to create an NFT collection with Apillon. Here is how to get them ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  NFT files
&lt;/h2&gt;

&lt;p&gt;NFTs can represent anything from images and text to music and video. They deliver extraordinary opportunities for yourself or your brand to display art collections, trade products, list services, sell unique experiences, and more.&lt;/p&gt;

&lt;p&gt;The ERC-721 standard packs any file format into permanently stored content on the blockchain, and thanks to &lt;a href="https://moonbeam.network/networks/moonbeam/nfts/"&gt;Moonbeam’s EVM compatibility&lt;/a&gt;, they can be deployed quickly and efficiently with Apillon.&lt;/p&gt;

&lt;p&gt;Even if you don’t have a collection of digital items yet, or don’t have the skills to create one, you can join the NFT trend. Have an AI tool generate NFT art based on your prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create art with AI
&lt;/h3&gt;

&lt;p&gt;To create graphic art, you can try several AI art generators, such as &lt;a href="https://www.midjourney.com/home/?callbackUrl=%2Fapp%2F"&gt;Midjourney&lt;/a&gt;, &lt;a href="https://stablediffusionweb.com/"&gt;Stable Diffusion&lt;/a&gt;, and &lt;a href="https://www.artbreeder.com/"&gt;Artbreeder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you’re more into music, try &lt;a href="https://soundraw.io/"&gt;Soundraw&lt;/a&gt;, or if you don’t mind playing with code, &lt;a href="https://github.com/openai/jukebox/"&gt;OpenAI’s Jukebox&lt;/a&gt; might be the tool for you.&lt;/p&gt;

&lt;p&gt;Before you venture out into the AI world, it’s a good idea to plan out your NFT collection — in terms of what it should represent, its style of it, the number of items you want to create, how they will differ, etc.&lt;/p&gt;

&lt;p&gt;All this information will help you gather the metadata of NFT files.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;strong&gt;Example:&lt;/strong&gt; For the purpose of this guide, four AI-generated images depicting fantasy landscapes in four seasons were created using Artbreeder. Each was saved with a specific name.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vv181dgq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k93fnwvcpqzw8rukyqs9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vv181dgq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k93fnwvcpqzw8rukyqs9.jpg" alt="apillon-nft-service-artbreeder-ai-art" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Save files
&lt;/h3&gt;

&lt;p&gt;Once you have your unique items — either AI-generated or fruits of your own creativity — save them with designated names, e.g., 1.jpg, 2.jpg, etc.&lt;/p&gt;

&lt;p&gt;With Apillon, you can upload NFT files in batches. It’s advisable you have them all stored in a designated folder so you can easily drag and drop from your folder to the dashboard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; The NFT file names (e.g., “1.jpg”) should match the metadata entries. In the case of a mismatch, your NFT collection could be deployed wrong.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now with all your unique files stored, let’s proceed to list their metadata so you can deploy them all together to the blockchain and turn them into NFTs.&lt;/p&gt;

&lt;h2&gt;
  
  
  NFT metadata
&lt;/h2&gt;

&lt;p&gt;What makes NFTs unique is not just the jaw-dropping art. It’s also (or mostly) their metadata, the backbone of NFTs.&lt;/p&gt;

&lt;p&gt;Without metadata, NFTs are not really NFTs — two or more images can be the same, but the metadata behind them holds information on their creator, date of release, and other distinguishing factors and features that make them one-of-a-kind, permanently inscribed and traceable on the blockchain.&lt;/p&gt;

&lt;p&gt;NFT metadata can give information about the color, material or serial number of a physical item a token represents, attire or accessories of generative NFT characters, or music genre and featured artists in audio NFT.&lt;/p&gt;

&lt;h3&gt;
  
  
  Formatting metadata
&lt;/h3&gt;

&lt;p&gt;For metadata to be readable in the process of deploying NFT collection with Apillon, it should be listed as a CSV (comma-separated values) file.&lt;/p&gt;

&lt;p&gt;Make sure the attributes in columns conform with the category in the top row.&lt;/p&gt;

&lt;p&gt;This is how your metadata CSV file should look like. You can &lt;a href="https://app-staging.apillon.io/files/example.csv"&gt;download a CSV sample&lt;/a&gt;, replace contents with your own and save it as a CSV file on your disk, or create a new one from scratch and do the same.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N2DLA96P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhmeyzpvipwfkd5lbma0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N2DLA96P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhmeyzpvipwfkd5lbma0.png" alt="apillon-nft-service-metadata-csv-sample" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; The NFT metadata should list NFT file names as they were saved (e.g., “1.jpg”). In the case of a mismatch, your NFT collection could be deployed wrong.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Attributes
&lt;/h3&gt;

&lt;p&gt;Attributes represent a crucial trait of NFTs, and are a part of metadata that communicates detailed features of NFT contents.&lt;/p&gt;

&lt;p&gt;Attributes can give details on the behavior of depicted characters or special abilities of a token that add some spice to the NFTs and give them more personality. A clearly defined theme or purpose of the collection will make it easier to set the attributes of your NFTs and have AI generators produce more accurate and likable results.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;strong&gt;Example:&lt;/strong&gt; Aligned with the AI-generated files from the previous step, the following metadata and attributes were listed in a CSV file.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CBHN_arF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ymzfvppjmxforjpeg4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CBHN_arF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ymzfvppjmxforjpeg4v.png" alt="apillon-nft-service-metadata-csv-example" width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NFT collections deployed with Apillon can be shareable with NFT marketplaces, such as &lt;a href="https://tofunft.com/"&gt;tofuNFT&lt;/a&gt;. To make your NFTs comply with how marketplaces display them, please read through the standard &lt;a href="https://docs.opensea.io/docs/metadata-standards#attributes"&gt;NFT Attribute guidelines&lt;/a&gt; by OpenSea.&lt;/p&gt;

&lt;h3&gt;
  
  
  Storing metadata
&lt;/h3&gt;

&lt;p&gt;As an essential component of your NFT collection, metadata should be managed and stored carefully.&lt;/p&gt;

&lt;p&gt;When uploaded via the NFT collection creation tool on the Apillon dashboard, metadata is automatically stored in a newly created &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket"&gt;Web3 Storage bucket&lt;/a&gt;, making it permanently accessible and unstoppable.&lt;/p&gt;

&lt;p&gt;You can also manually create a Web3 Storage bucket on the Apillon dashboard, upload your NFT metadata file, and call the metadata URI in the NFT collection deployment process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy NFT collection at Apillon
&lt;/h2&gt;

&lt;p&gt;Now that you have created unique pieces of your artistic expression and have a metadata CSV file at hand, you’re ready to start your NFT journey on the Apillon platform.&lt;/p&gt;

&lt;p&gt;Check out Part 2 of the NFT Service guide and deploy your NFT collection in just a few steps. 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/apillon/launch-nfts-in-minutes-pt-2-create-and-deploy-nft-collection-on-moonbeam-4952"&gt;Launch NFTs in minutes Pt. 2 - Create and deploy NFT collection on Moonbeam&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--neoJsfQD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kp1n8ojgiohgorgzw8gv.png" alt="apillon-proceed-to-dashboard-cta" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://blog.apillon.io/guide-nft-service-pt-1-generate-nft-art-with-ai-and-get-files-ready-200168b6b303"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Apillon Feature: Discord connectivity</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Tue, 11 Apr 2023 10:28:32 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-feature-discord-connectivity-3bfm</link>
      <guid>https://dev.to/apillon/apillon-feature-discord-connectivity-3bfm</guid>
      <description>&lt;p&gt;&lt;em&gt;By linking your Apillon account to Apillon’s Discord server, you can actively participate in the platform’s evolution through community-oriented governance.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The newest feature on the Apillon platform allows you to enrich your Web3 development process with community feedback, discuss the opportunities for dapp creators, and — most importantly — co-create the future of Web3.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Discord connectivity?
&lt;/h2&gt;

&lt;p&gt;Apillon is a user-oriented Web3 development platform where every feature is built with developers in mind.&lt;/p&gt;

&lt;p&gt;Discord connectivity lets you link your Apillon account to Apillon’s Discord server and actively participate in the platform’s evolution through community-oriented governance.&lt;/p&gt;

&lt;p&gt;The Apillon Discord server will devote two channels to governance-related topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#governance-discussion&lt;/strong&gt;: live already&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;#governance-vote&lt;/strong&gt;: yet to be activated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9EZkCMRh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ge15r27rfc7w659fw444.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9EZkCMRh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ge15r27rfc7w659fw444.png" alt="apillon-discord-governance-channels" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apillon governance model will roll out in &lt;a href="https://blog.apillon.io/apillon-platform-governance-key-takeaways-e63816522536#351c"&gt;three phases&lt;/a&gt;, and initially, only discussion around governance-related topics will be activated. In future versions of the Apillon platform, more features and initiatives will be provided to the Apillon and NCTR token community.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;&lt;a href="https://blog.apillon.io/apillon-platform-governance-key-takeaways-e63816522536"&gt;Learn more about Apillon governance and how to participate in it.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To become a member of the governance channels, you need permission from the team based on your activity as an Apillon user.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phases of Apillon governance
&lt;/h3&gt;

&lt;p&gt;Apillon governance model encourages different communities to partake in the platform’s evolution — primarily Web3 developers, but also NCTR token holders and project ambassadors.&lt;/p&gt;

&lt;p&gt;In Phase 1, all connected users with a registered Apillon account will be able to discuss the proposals drafted by the Apillon team. This will allow Apillon to test the governance voting protocols and monitor the open discussions.&lt;/p&gt;

&lt;p&gt;In Phase 2, the Apillon governance model will undergo changed dynamics of proposal discussions and user participation. Apillon users that hold and stake NCTR tokens will assume more voting power.&lt;/p&gt;

&lt;p&gt;And lastly, in Phase 3, Apillon will roll out upgraded blockchain-based voting mechanics giving more voting power to Apillon users and Web3 developers, and assigning them greater responsibility in co-creating a platform to suit their engineering needs better.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to connect to Discord via Apillon dashboard?
&lt;/h2&gt;

&lt;p&gt;First, make sure you have a Discord account open and that you’re logged in. If you don’t have one, click &lt;a href="https://discord.com/"&gt;here&lt;/a&gt; and download the Discord app.&lt;/p&gt;

&lt;p&gt;The rest is child’s play.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect to Discord
&lt;/h3&gt;

&lt;p&gt;Log into your &lt;a href="https://app-staging.apillon.io/dashboard"&gt;Apillon dashboard&lt;/a&gt;, and under your avatar picture in the top right corner, click &lt;strong&gt;Profile&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3PFnCNg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sduqc78oy550fwgpily6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3PFnCNg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sduqc78oy550fwgpily6.png" alt="apillon-dashboard-profile" width="800" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the bottom of the page, scroll down to the Discord section and click &lt;strong&gt;“Connect Discord”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RXC5VzaA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30uymqcnfxq30lqv9jx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RXC5VzaA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30uymqcnfxq30lqv9jx7.png" alt="apillon-dashboard-connect-discord-cta" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking the button prompts a Discord window asking for permission to authorize access to your Discord account. Click &lt;strong&gt;“Authorize”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BTO1dveH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mf6oskb3aufrdppp96hv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BTO1dveH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mf6oskb3aufrdppp96hv.png" alt="apillon-discord-authorize-connectivity" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it — in a few seconds, your Discord account should be linked to your Apillon dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rgvUBpME--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdkublfgr574tcy4x5uh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rgvUBpME--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdkublfgr574tcy4x5uh.png" alt="apillon-dashboard-discord-connected" width="466" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, go to the Apillon Discord server, navigate straight to the #governance-discussion channel, or discover more rooms to chat around to optimize your Web3 development experience. Topics abound.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disconnect Discord
&lt;/h3&gt;

&lt;p&gt;To disconnect your Discord account, simply click &lt;strong&gt;“Disconnect”&lt;/strong&gt; at the bottom of your Profile page on the Apillon dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RpCha_g7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uhwzs2i7zwgvriiglemz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RpCha_g7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uhwzs2i7zwgvriiglemz.png" alt="apillon-dashboard-discord-disconnect" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Web3 development the community way
&lt;/h3&gt;

&lt;p&gt;By connecting your Discord account, you get a foot in the Apillon governance door.&lt;/p&gt;

&lt;p&gt;Link the platforms today and onboard the Web3 evolution backed by the community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UIHujHdL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wxy7zxaytpnpc17rgqc3.png" alt="apillon-account-login" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://blog.apillon.io/apillon-feature-discord-connectivity-960ba1b064ed"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Web3 Adoption: Polkadot interoperability &amp; cross-chain dapps</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Wed, 05 Apr 2023 11:37:58 +0000</pubDate>
      <link>https://dev.to/apillon/web3-adoption-polkadot-interoperability-cross-chain-dapps-21gk</link>
      <guid>https://dev.to/apillon/web3-adoption-polkadot-interoperability-cross-chain-dapps-21gk</guid>
      <description>&lt;p&gt;&lt;em&gt;Cross-chain dapps deliver richer features and better user experience, operate across different networks, and can attract a larger user base.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is interoperability and why does it matter?
&lt;/h2&gt;

&lt;p&gt;Not all dapps were created equal. In their architectural essence, they are built on different networks or protocols, each optimized for a specific purpose and, as a result, deliver different features.&lt;/p&gt;

&lt;p&gt;But to expand capabilities, boost relevance, and attract the highest number of users possible from all corners of the Web3 space, dapps should shed reliance on a single, native blockchain, and support interaction, communication, and exchange of data and value across different blockchain network in the most seamless possible way.&lt;/p&gt;

&lt;p&gt;Interoperability — the ability to operate “inter-networkingly” — allows dapps to benefit from the features of non-native networks in addition to their innate capabilities. Without it, a dapp is confined to only its native blockchain ecosystem, severely limiting its possibilities for product evolution, feature improvement, and market expansion.&lt;/p&gt;

&lt;p&gt;Cross-chain communication is therefore essential for the adoption of Web3 technologies, products, and dapps built upon them, and the growth of the ecosystem at large. Users know best, and if they can’t use a Web3 product on a network they prefer, they are more likely to abandon it or fail to start using it altogether.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interoperability but make it innate
&lt;/h3&gt;

&lt;p&gt;To achieve interoperability in a dapp, you could typically utilize cross-chain protocols, including atomic swaps, sidechains, and cross-chain bridges. In their essence, these protocols were designed to enable trustless and secure transfer of data and assets across chains.&lt;/p&gt;

&lt;p&gt;However, recent exploits have also exposed vulnerabilities, particularly in cross-chain bridges, hurting user assets and trust. Besides, developing interoperable capabilities in a dapp could be a daunting task that hinders the adoption of Web3 technologies.&lt;/p&gt;

&lt;p&gt;To avoid a single point of risk and ease cross-chain communication, interoperability should be an inherent feature of a network or protocol, not a third-party service with a high barrier to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interoperability on Polkadot
&lt;/h2&gt;

&lt;p&gt;The Polkadot Network has been addressing the question of interoperability by design since its conception.&lt;/p&gt;

&lt;p&gt;In its unique architecture, multiple niche-oriented blockchains (parachains) operate independently in catering to specific use cases. For example, Crust Network is optimized for secure and scalable decentralized storage, while KILT Protocol goes all-in into decentralized authentication of digital assets.&lt;/p&gt;

&lt;p&gt;At the same time, all parachains are connected to the main network called the Polkadot Relay Chain and secured by the same set of validators in Polkadot’s security model. This way, they can exchange data and assets securely, following the same protocol.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://polkadot.network/features/cross-chain-communication/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XaAEwMia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9fo7lf2mz6guqs12s5g4.png" alt="apillon-polkadot-interoperability-webpage-snippet" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Chain Messaging system (XCM)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://wiki.polkadot.network/docs/learn-xcm"&gt;XCM&lt;/a&gt; is one of the critical features of the Polkadot Network, setting it apart from other Web3 ecosystems. This highly complex language format for cross-chain data exchange supports secure transfer of both simple tokens and feature-rich assets like NFTs across multiple blockchains and even external networks. Its programmable nature is also capable of turning messages into a kind of computer program executable on different networks.&lt;/p&gt;

&lt;p&gt;Contrary to bridges, Polkadot’s cross-chain messaging protocol (XCMP), is a no-intermediary mechanism of cross-chain communication, cutting reliance on a trusted third party and thus reducing risks of exploits.&lt;/p&gt;

&lt;p&gt;And, as a cross-consensus messaging system, it further supports data exchange between smart contracts, Substrate pallets, via bridges, and even connects networks with different consensus mechanisms, like Bitcoin (proof-of-work) and Polkadot (proof-of-stake).&lt;/p&gt;

&lt;h3&gt;
  
  
  Bridge protocols
&lt;/h3&gt;

&lt;p&gt;The Polkadot Network also inherently supports the implementation of &lt;a href="https://wiki.polkadot.network/docs/learn-architecture#bridges"&gt;bridge protocols&lt;/a&gt;, such as the Polkadot Bridge Protocol. These bridges connect to the Relay Chain, and allow data transfers from one network to another, as well as between Polkadot and external blockchain networks, such as Ethereum, while sharing security through the Polkadot consensus mechanism. Besides, the Chainlink integration lets Polkadot-based dapps use external data sources and oracles across multiple chains.&lt;/p&gt;

&lt;p&gt;In general, Polkadot’s architecture was designed to sustain cross-chain communication and dapp interoperability, making it a go-to platform for developers building dapps that require cross-network data exchange.&lt;/p&gt;

&lt;p&gt;But what if you’re new to the space or just want to harness all the cross-chain capabilities without having to dive deep into the code, protocols, frameworks, and smart contracts?&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-chain dapps made easy
&lt;/h2&gt;

&lt;p&gt;Cross-chain dapps deliver richer features and better user experience, operate across different networks, and can attract greater Web3 and Web2 communities.&lt;/p&gt;

&lt;p&gt;Unless you deliberately confine a dapp to a single network, its interoperability and cross-chain capabilities should be on your mind since the first day of the dapp building process.&lt;/p&gt;

&lt;p&gt;You could go the long route and build the core infrastructure, test and integrate the cross-chain mechanism fit for your dapp, and develop every feature by sourcing the code from both its native and external parachain networks, as well as the chosen cross-chain mechanism.&lt;/p&gt;

&lt;p&gt;Or, you could cut the story short using the multi-chain by-design Apillon platform, attach the Web3 services you need, and deploy. The Apillon dashboard gives you access to multiple Polkadot-based Web3 services at once so you can choose and deploy as you please, and have them communicate with each other from day one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2zhTYMW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0ox8nz02q33midin1pr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2zhTYMW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0ox8nz02q33midin1pr.png" alt="apillon-api-connectivity" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the back-end, Apillon links to the supported Polkadot parachains while respecting their protocols, connectivity to the relay chain, and cross-chain capabilities. The platform’s front-end, however, abstracts all the development complexity and funnels it down to a sleek dashboard, delivering parachain functionalities in two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Via drag-and-drop Web3 services&lt;/li&gt;
&lt;li&gt;Via Apillon APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_3xrgUrV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3rjtcwpqt9dc8kq66jf8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_3xrgUrV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3rjtcwpqt9dc8kq66jf8.png" alt="apillon-dashboard-web3-services-api-connectivity" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;Learn more about &lt;a href="https://dev.to/apillon/apillon-platform-up-close-web3-services-ib7"&gt;Web3 services&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;🔎 &lt;em&gt;Learn more about &lt;a href="https://dev.to/apillon/apillon-features-api-calls-to-web3-services-220f"&gt;Apillon APIs&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Cross-chain dapps at your fingertips
&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="https://blog.apillon.io/apillon-launches-an-invitation-only-closed-beta-of-the-web3-development-platform-a075c38273a3"&gt;Closed Beta&lt;/a&gt; phase of the Apillon platform, you can create cross-chain dapps that employ Web3 Storage and Web3 Hosting service by Crust Network and the IPFS protocol.&lt;/p&gt;

&lt;p&gt;Soon, however, you will be able to expand your dapps’ capabilities by accessing more connected networks and their features. The upcoming platform upgrades will let you create NFT collections on the Moonbeam Network, integrate Web3 Authentication through decentralized identifiers (DIDs) via the KILT Protocol, and employ Web3 Computing in the decentralized cloud powered by Phala Network. And, they will all work together seamlessly to power your cross-chain Web3 product.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"We envision a future where any user opens an app, choses any assets and sends them to any user, completely agnostic to the chains in the background. This can only happen with true, native, bottom-up interoperability."&lt;/em&gt; - &lt;a href="https://twitter.com/gosu128"&gt;Nino Kutnjak&lt;/a&gt;, Apillon CTO&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By making dapp interoperability attainable to every developer, regardless of their experience with Web3, Apillon aims to boost the adoption of decentralized technologies and deliver them in a way that supports broad communicability with the ecosystem from the first click onwards.&lt;/p&gt;

&lt;p&gt;Tap into a wider and deeper pool of cross-chain features and create more agile, powerful, and user-friendly Web3 solutions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--00Iou_pk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bmq20hzdduiivyyl0c71.png" alt="apillon-proceed-to-dashboard-cta" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://blog.apillon.io/web3-adoption-polkadot-interoperability-cross-chain-dapps-c74c48a07bdc"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Apillon Feature: Polkadot wallet login</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Wed, 29 Mar 2023 12:22:00 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-feature-polkadot-wallet-login-6k4</link>
      <guid>https://dev.to/apillon/apillon-feature-polkadot-wallet-login-6k4</guid>
      <description>&lt;p&gt;&lt;em&gt;In the latest feature upgrade, the Apillon dashboard lets you connect your Polkadot wallet for easy account login.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is a Polkadot wallet?
&lt;/h2&gt;

&lt;p&gt;Digital wallets are tools that allow users to perform transactions on a blockchain network, be it making payments or transferring assets. Polkadot wallet is, therefore, a tool, a digital system, that lets you authorize transactions on the Polkadot network.&lt;/p&gt;

&lt;p&gt;With Polkadot wallets, you can transfer funds or data from one digital wallet to another or authorize actions on platforms and dapps that support or require connectivity with the Polkadot network.&lt;/p&gt;

&lt;p&gt;Apillon supports connectivity with non-custodial Polkadot wallets, allowing you to access the Polkadot ecosystem and the Apillon platform directly from your browser while maintaining control over your private keys.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Learn more about &lt;a href="https://wiki.polkadot.network/docs/wallets"&gt;Polkadot wallets&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Polkadot wallet connectivity?
&lt;/h2&gt;

&lt;p&gt;In the current phase, a linked Polkadot wallet represents one of the ways you can log in to your existing Apillon account.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; At this stage, you cannot register or sign up for a new Apillon account using your Polkadot wallet. True Web3 account registration and log-in using &lt;em&gt;only&lt;/em&gt; Polkadot wallet (replacing the email-password combo) will be available in upcoming versions of the Apillon platform.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As the Apillon platform evolves, it plans to harness Polkadot wallet capabilities to enable direct interaction with parachains, asset transfer, on-chain payments, and ownership of assets and smart contracts deployed via Apillon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Polkadot wallets supported by Apillon
&lt;/h2&gt;

&lt;p&gt;In its current state, the Apillon platform supports connectivity to three most commonly used Polkadot browser extension wallets, namely Polkadot{.js}, SubWallet, and Talisman.&lt;/p&gt;

&lt;h3&gt;
  
  
  Polkadot-JS​
&lt;/h3&gt;

&lt;p&gt;More than a wallet, the &lt;a href="https://polkadot.js.org/extension/"&gt;Polkadot-JS browser extension&lt;/a&gt; lets you manage multiple accounts, import or export them, and even restore lost accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cvGom_fN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1030x5dpblnjtfcaem7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cvGom_fN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1030x5dpblnjtfcaem7h.png" alt="apillon-feature-polkadot-log-in-polkadot-js-extension" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Polkadot{.js} browser extension, you can sign and authorize transactions/actions on the Polkadot network, but you cannot transfer funds. It also allows you to interact with extension-compliant dapps, such as the &lt;a href="https://wiki.polkadot.network/docs/polkadotjs-ui"&gt;Polkadot-JS UI&lt;/a&gt;, the native application for accessing features available on Substrate chains as Polkadot and Kusama.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Explore and install Polkadot{.js} 👉 &lt;a href="https://polkadot.js.org/extension/"&gt;https://polkadot.js.org/extension/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  SubWallet
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://subwallet.app/"&gt;SubWallet&lt;/a&gt; is a non-custodial wallet for Polkadot, Substrate, Ethereum, and other ecosystems. By providing connectivity to more than 150+ networks, it allows you to transfer and monitor assets and data across multiple Web3 worlds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LHrKna-_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xfw4ggn2d18tu7w58e3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LHrKna-_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xfw4ggn2d18tu7w58e3y.png" alt="apillon-feature-polkadot-log-in-subwallet" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Featuring a wide range of functionalities, from different ways to import accounts and rich assets support to XCM transferability, MetaMask compatibility, and fiat on-ramp, SubWallet is one of the most advanced Polkadot-supported wallets.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Explore and download SubWallet 👉 &lt;a href="https://subwallet.app/"&gt;https://subwallet.app/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Talisman
&lt;/h3&gt;

&lt;p&gt;Similar to SubWallet, &lt;a href="https://www.talisman.xyz/"&gt;Talisman&lt;/a&gt; delivers broad connectivity to an array of Substrate and EVM networks, including Polkadot, and allows user-friendly management of crypto assets and Web3 accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---UR7oQuQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/znrvwebpgromobsr0clv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---UR7oQuQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/znrvwebpgromobsr0clv.png" alt="apillon-feature-polkadot-log-in-talisman" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Talisman, you can manage your assets, including NFTs, track portfolio, access fiat-on ramp, and authorize transactions on the Polkadot network.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Explore and download Talisman 👉 &lt;a href="https://www.talisman.xyz/"&gt;https://www.talisman.xyz/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How to connect your Polkadot wallet on Apillon?
&lt;/h2&gt;

&lt;p&gt;Connecting to your Polkadot wallet from your Apillon dashboard is a matter of a few clicks. You only need to have your wallet of choice installed and be logged in.&lt;/p&gt;

&lt;p&gt;Now, go to your &lt;a href="https://app.apillon.io/login"&gt;Apillon dashboard&lt;/a&gt;, click on your avatar icon in the top right corner, and choose &lt;strong&gt;Profile&lt;/strong&gt;. Scroll down towards the bottom of the page and find &lt;strong&gt;Connect wallet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hDTCRnEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovq8275pebs6d7qcu14l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hDTCRnEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovq8275pebs6d7qcu14l.png" alt="apillon-feature-polkadot-wallet-log-in-dashboard" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the &lt;strong&gt;"Connect wallet"&lt;/strong&gt; button, and in the pop-up window, choose the Polkadot wallet you want to connect to, either Polkadot{.js}, SubWallet, or Talisman.&lt;/p&gt;

&lt;p&gt;Apillon only establishes connectivity to a Substrate-based account, so make sure your wallet is connected to the right network or switch networks if needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TZ-MMUTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lgf2vvjymaicc77iv1ns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TZ-MMUTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lgf2vvjymaicc77iv1ns.png" alt="apillon-feature-polkadot-log-in-polkadot-wallet-list" width="751" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The process is the same for all supported wallets, but let's see it step by step for each of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Polkadot{.js}
&lt;/h3&gt;

&lt;p&gt;To connect the Polkadot{.js} browser extension wallet, choose it on the list and click the &lt;strong&gt;"Connect wallet"&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;When the Polkadot{.js} pop-up window appears, authorize connection by entering the password and click &lt;strong&gt;"Sign the message"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gxY7wcMv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8r7pte3m7gku3gdnlp52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gxY7wcMv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8r7pte3m7gku3gdnlp52.png" alt="apillon-feature-polkadot-log-in-polkadot-js" width="748" height="666"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WbAJi-IB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/doiqumbauqc1x4mr3lhm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WbAJi-IB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/doiqumbauqc1x4mr3lhm.png" alt="apillon-feature-polkadot-log-in-polkadot-js-approve" width="558" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Soon after, your wallet should be connected to your Apillon dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  SubWallet
&lt;/h3&gt;

&lt;p&gt;To connect SubWallet, choose it on the Connect wallet list, and click the &lt;strong&gt;"Connect wallet"&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;Approve the transaction in the SubWallet pop-up window by entering the password and clicking &lt;strong&gt;"Approve"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p061kVrd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o86yp64aq5iro748tcho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p061kVrd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o86yp64aq5iro748tcho.png" alt="apillon-feature-polkadot-log-in-subwallet-connect" width="737" height="595"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wfet0lDp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/21rllg1sd9hrey0g68is.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wfet0lDp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/21rllg1sd9hrey0g68is.png" alt="apillon-feature-polkadot-log-in-subwallet-connect-approve" width="461" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There, your SubWallet should be connected to Apillon in seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Talisman
&lt;/h3&gt;

&lt;p&gt;And, if you prefer Talisman, simply choose it on the list of wallets, click "Connect wallet", and "Approve" in the Talisman pop-up window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FIfjK5V7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2782z1v2sd5amqkme0l2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FIfjK5V7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2782z1v2sd5amqkme0l2.png" alt="apillon-feature-polkadot-log-in-talisman-connect" width="736" height="587"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2ciJWu0k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6si8atvn9hscyb270ii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2ciJWu0k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6si8atvn9hscyb270ii.png" alt="apillon-feature-polkadot-log-in-talisman-connect-approve" width="398" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voilà, your Talisman wallet is linked to your Apillon dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Account log in using Polkadot wallet
&lt;/h3&gt;

&lt;p&gt;As mentioned earlier, Polkadot wallet log in is, in its current phase, only available to users that have already linked their existing accounts with a Polkadot wallet.&lt;/p&gt;

&lt;p&gt;After logging out from your Apillon account, you can log in again using only your Polkadot wallet. On the home page, click the &lt;strong&gt;"Log in with wallet"&lt;/strong&gt; button, choose the linked wallet, and authorize the transaction in the wallet's pop-up window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MoCS615A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vtjd0ie1eiexgj4vafs4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MoCS615A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vtjd0ie1eiexgj4vafs4.png" alt="apillon-feature-polkadot-log-in" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it. You can log in to your Apillon account using your Polkadot wallet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gateway to Polkadot
&lt;/h3&gt;

&lt;p&gt;With the latest feature, Apillon lets you link your Polkadot wallet for an easy account login and more unlocked capabilities in the platform's future releases.&lt;/p&gt;

&lt;p&gt;Go to your Apillon account and establish direct connectivity with Polkadot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/profile"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CUQGfBQv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uzj17xifsbb747324yzy.png" alt="apillon-dashboard-log-in-cta" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://blog.apillon.io/apillon-feature-polkadot-wallet-login-d50c2128e8ed"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Apillon Features: API calls to Web3 services</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Mon, 20 Mar 2023 13:42:54 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-features-api-calls-to-web3-services-220f</link>
      <guid>https://dev.to/apillon/apillon-features-api-calls-to-web3-services-220f</guid>
      <description>&lt;p&gt;&lt;em&gt;Apillon API delivers a straightforward connectivity to Polkadot parachains while respecting the standard development workflow.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;One of the main hinderers of Web3 adoption is the development process. Apillon API shortens the way Web3 products are built by saving developers the trouble of diving into each parachain's specifics, logic, and requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  The drawbacks of standard access to Web3
&lt;/h2&gt;

&lt;p&gt;If you decide to code a Web3 project or implement a decentralized service provider to your existing website or app from scratch, you face a steep learning curve and a potentially high risk of things going south.&lt;/p&gt;

&lt;p&gt;Wrestling with Web3 bare-handed could be extremely heavy on resources while still not guaranteeing any wins. There are plenty of uncertainties along the way, and every developer, even the Web3 veterans, could easily overlook important steps, ultimately leading to deep frustration and even abandonment of the Web3 mission altogether.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;&lt;a href="https://blog.apillon.io/how-apillon-changes-the-way-web3-products-are-built-ee0adae9b94a"&gt;Learn more about the challenges of building on Web3&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To simplify the development process and bring it to terms every developer should be familiar with, Apillon introduces API connectivity to linked Polkadot parachains and their Web3 services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apillon Web3 APIs
&lt;/h2&gt;

&lt;p&gt;Apillon integrates multiple &lt;a href="https://polkadot.network/"&gt;Polkadot&lt;/a&gt; parachains and offers straightforward access to linked decentralized services in two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A drag-and-drop deployment of &lt;a href="https://blog.apillon.io/apillon-platform-up-close-web3-services-f77530dd274e"&gt;Web3 services&lt;/a&gt; on the Apillon dashboard&lt;/li&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post, we will dive into the latter, where Apillon APIs enhance and streamline the coding process of Web3 projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Apillon API?
&lt;/h3&gt;

&lt;p&gt;Apillon API is a set of RESTful API endpoints that allow you to integrate Apillon Web3 services modules into your Web3 project.&lt;/p&gt;

&lt;p&gt;Using Apillon APIs, you make a call to a server and receive the response over the HTTP protocol.&lt;/p&gt;

&lt;p&gt;To ensure the privacy and safety of Web3 project development, all routes are private and require you to use an API key.&lt;/p&gt;

&lt;p&gt;Now, let's see how to use Apillon APIs when coding your Web3 project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apillon API specifics
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Requests&lt;/strong&gt;&lt;br&gt;
The server speaks &lt;a href="https://en.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt;, and for that reason, every call to the server should include a &lt;code&gt;Content-Type&lt;/code&gt; header set to &lt;code&gt;application/json;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication and authorization&lt;/strong&gt;&lt;br&gt;
Apillon API routes ensure privacy by restricting public access and requiring authentication.&lt;/p&gt;

&lt;p&gt;When creating requests, you should therefore include a &lt;a href="https://en.wikipedia.org/wiki/Basic_access_authentication"&gt;basic auth&lt;/a&gt; HTTP header field in the form of &lt;code&gt;Authorization: Basic &amp;lt;credentials&amp;gt;&lt;/code&gt;, where credentials represent the Base64 encoding of API key and API key secret joined by a single colon &lt;code&gt;:&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can generate API keys on the &lt;a href="https://app.apillon.io/dashboard/api-keys"&gt;Apillon dashboard&lt;/a&gt; under Project settings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---e2z_hZa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4enuve8ro6bqgv5u2zdo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---e2z_hZa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4enuve8ro6bqgv5u2zdo.png" alt="apillon-dashboard-api-key-generation" width="800" height="435"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5mI25IbW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wwvbdsdc124c1m87ofh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5mI25IbW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wwvbdsdc124c1m87ofh.png" alt="apillon-dashboard-api-key-details" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once generated, you can use the API key in your project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responses&lt;/strong&gt;&lt;br&gt;
Every response has a unique ID to help you identify potential issues in the API connectivity or accessed services. It also includes a status code so you can quickly identify the cause of a potential problem.&lt;/p&gt;

&lt;p&gt;Query requests through &lt;code&gt;GET&lt;/code&gt; method can return status codes &lt;code&gt;200&lt;/code&gt;, &lt;code&gt;400&lt;/code&gt;, &lt;code&gt;401&lt;/code&gt;, &lt;code&gt;403&lt;/code&gt;, or &lt;code&gt;500&lt;/code&gt;, indicating success, bad request, unauthenticated or unauthorized access, or system error.&lt;/p&gt;

&lt;p&gt;Mutations through &lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; can further return codes &lt;code&gt;201&lt;/code&gt; and &lt;code&gt;422&lt;/code&gt;, namely successful creation or failed data validation. And, invalid routes return status code &lt;code&gt;404&lt;/code&gt;, indicating path not found.&lt;/p&gt;

&lt;p&gt;A successful request includes a &lt;code&gt;data&lt;/code&gt; key, which holds a valid response object.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;Learn more about Apillon Web3 API, responses, error handling, and validation in &lt;a href="https://wiki.apillon.io/build/3-apillon-api.html"&gt;Apillon Wiki&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dlq3HqRG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9932gy2ni7meaaujgzvk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dlq3HqRG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9932gy2ni7meaaujgzvk.gif" alt="apillon-api-to-web3-wiki" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now with theory out of the way, let's dive into the contents of APIs connecting to the two Web3 services accessible in the Apillon Beta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web3 Storage API&lt;/li&gt;
&lt;li&gt;Web3 Hosting API&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;em&gt;More APIs will be made available in the upcoming versions of the Apillon platform, so &lt;a href="https://twitter.com/apillon"&gt;stay tuned&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Web3 Storage API
&lt;/h2&gt;

&lt;p&gt;Apillon Web3 Storage API connects to the &lt;a href="https://www.crust.network/"&gt;Crust Network&lt;/a&gt;, allowing you to store your files in a decentralized way.&lt;/p&gt;

&lt;p&gt;Before you start using the Web3 Storage API, there are two things to keep in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You should first create a &lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket"&gt;storage bucket&lt;/a&gt; on the &lt;a href="https://app.apillon.io/login"&gt;Apillon dashboard&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In all cURL examples, parameters with a colon as a prefix should be replaced with real values.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  File upload process via Apillon Web3 Storage API
&lt;/h3&gt;

&lt;p&gt;The files you store on the Crust Network are uploaded as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Request signed URL(s) for upload.&lt;/li&gt;
&lt;li&gt;File is uploaded to Apillon central server.&lt;/li&gt;
&lt;li&gt;File is transferred to IPFS and available through the Apillon gateway.&lt;/li&gt;
&lt;li&gt;File is replicated to different IPFS nodes globally via Crust Network.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, let's do it step by step using Apillon API.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to use Apillon Web3 Storage API
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Upload to storage bucket&lt;/strong&gt;&lt;br&gt;
First, create file upload requests that return URLs for file upload along with &lt;code&gt;sessionUuid&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/storage/:bucketUuid/upload&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;files&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: [
        {
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;fileName&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;My test file&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;text/html&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;
        }
    ]

}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cbdc4930-2bbd-4b20-84fa-15daa4429952&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sessionUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;3b6113bc-f265-4662-8cc5-ea86f06cc74b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;files&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileName&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My test file&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://sync-to-ipfs-queue.s3.eu-west-1.amazonaws.com/STORAGE_sessions/73/3b6113bc-f265-4662-8cc5-ea86f06cc74b/My%20test%20file?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAQIMRRA6GJRL57L7G%2F20230215%2Feu-west-1%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20230215T114524Z&amp;amp;X-Amz-Expires=900&amp;amp;X-Amz-Signature=499367f6c6bff5be50686724475ac2fa6307b77b94fd1a25584c092fe74b0a58&amp;amp;X-Amz-SignedHeaders=host&amp;amp;x-id=PutObject&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;4ef1177b-f7c9-4434-be56-a559cec0cc18&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. End upload session&lt;/strong&gt;&lt;br&gt;
Once files are uploaded to the cloud server via the received URL, trigger file sync to IPFS and Crust.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/storage/:bucketUuid/upload/:sessionUuid/end&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;directSync&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: true
}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b64b1c07-1a8a-4b05-9e3b-3c6a519d6ff7&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Get bucket content&lt;/strong&gt;&lt;br&gt;
Next, get directories and files in the storage bucket. Note that items are paginated and can be filtered and ordered through query parameters.&lt;/p&gt;

&lt;p&gt;🔻 cURL basic&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/storage/:bucketUuid/content&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 cURL with params&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/storage/:bucketUuid/content?orderBy=name&amp;amp;desc=false&amp;amp;limit=5&amp;amp;page=1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;c8c50b3b-91ff-42c7-b0af-f866ce23f18a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;items&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;...&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My directory&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;createTime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2022-12-08T13:27:00.000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;updateTime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2023-01-10T12:18:55.000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;parentDirectoryId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;link&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;397&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My file.txt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;createTime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2023-01-19T10:10:01.000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;updateTime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2023-01-19T10:10:31.000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/plain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;parentDirectoryId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0a775bfa-a0d0-4e0b-9a1e-e909e426bd11&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;link&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://ipfs.apillon.io/ipfs/QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;...&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;total&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Get file details&lt;/strong&gt;&lt;br&gt;
Lastly, get details of a specific file inside a storage bucket.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/storage/:bucketUuid/file/:id/detail&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;5be33c54-2cc9-46f4-8f50-debc98866810&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileStatus&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;file&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;397&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0a775bfa-a0d0-4e0b-9a1e-e909e426bd11&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My file.txt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/plain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileStatus&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;downloadLink&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://ipfs.apillon.io/ipfs/QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it, your files should now be stored on Crust Network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Delete file&lt;/strong&gt;&lt;br&gt;
To delete a file, you can mark it for deletion inside a storage bucket using &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;fileUuid&lt;/code&gt;, or &lt;code&gt;CID&lt;/code&gt;. The file will be completely deleted from the Apillon system and Apillon IPFS node after three months. Once a file is marked for deletion, it will not be renewed on Crust Network.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;DELETE&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/storage/:bucketUuid/file/:id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bc92ff8d-05f2-4380-bb13-75a1b6b7f388&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;397&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0a775bfa-a0d0-4e0b-9a1e-e909e426bd11&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My file.txt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/plain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileStatus&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voila, you've made it through the whole process of uploading files to decentralized storage via Crust Network and Apillon API.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;Dive into more details, parameters, metadata, and statuses of the &lt;a href="https://wiki.apillon.io/build/3-apillon-api.html#web3-storage-api"&gt;Web3 Storage API&lt;/a&gt; and connect Crust Network's decentralized storage service to your website or app.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CAODcDtk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fumfphbuglpulbr64y66.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CAODcDtk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fumfphbuglpulbr64y66.gif" alt="apillon-web3-storage-api-wiki" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 Hosting API
&lt;/h2&gt;

&lt;p&gt;Apillon Web3 Hosting API connects to the &lt;a href="https://www.crust.network/"&gt;Crust Network&lt;/a&gt;, where you can host your website in a decentralized way.&lt;/p&gt;

&lt;p&gt;Before you start using the Web3 Hosting API, there are two things to keep in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You should first create a website on the &lt;a href="https://app.apillon.io/dashboard/service/hosting"&gt;Apillon dashboard&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In all cURL examples, parameters with a colon as a prefix should be replaced with real values.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Website deployment process via Apillon Web3 Hosting API
&lt;/h3&gt;

&lt;p&gt;Apillon Hosting API provides endpoints that can be used to implement &lt;a href="https://en.wikipedia.org/wiki/CI/CD"&gt;CI/CD&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The website you host on the Crust Network is deployed as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Website files are uploaded to the Apillon cloud server.&lt;/li&gt;
&lt;li&gt;Request URLs for files upload.&lt;/li&gt;
&lt;li&gt;Files are uploaded to a cloud server.&lt;/li&gt;
&lt;li&gt;Trigger transfer to website.&lt;/li&gt;
&lt;li&gt;Deployment to staging or production environment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, let's do it step by step using Apillon API.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use Apillon Web3 Hosting API
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Get URLs for files upload&lt;/strong&gt;&lt;br&gt;
First, create file upload requests that return URLs for file upload.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/hosting/websites/:websiteUuid/upload&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;files&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: [
        {
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;fileName&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;index.html&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;text/html&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;
        },
        {
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;fileName&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;styles.css&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;text/css&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,
            &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;assets/&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;
        }

    ]

}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;7dd011ec-20e2-4c28-b585-da6c6f7fce8d&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sessionUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;29ef6ca2-b171-440c-b934-db8aa88c3424&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;files&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileName&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;index.html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://sync-to-ipfs-queue.s3.eu-west-1.amazonaws.com/HOSTING_sessions/70/29ef6ca2-b171-440c-b934-db8aa88c3424/index.html?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAQIMRRA6GJRL57L7G%2F20230215%2Feu-west-1%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20230215T105030Z&amp;amp;X-Amz-Expires=900&amp;amp;X-Amz-Signature=187035d2307bc089101eff3abbdd7baa3e8691b4d5d3bafa5aebb87e589e8c0c&amp;amp;X-Amz-SignedHeaders=host&amp;amp;x-id=PutObject&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;e17436a1-5292-4380-ad91-eaac02a862b1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;assets/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileName&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;styles.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;contentType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://sync-to-ipfs-queue.s3.eu-west-1.amazonaws.com/HOSTING_sessions/70/29ef6ca2-b171-440c-b934-db8aa88c3424/assets/styles.css?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAQIMRRA6GJRL57L7G%2F20230215%2Feu-west-1%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20230215T105030Z&amp;amp;X-Amz-Expires=900&amp;amp;X-Amz-Signature=f91b03a951fe3f99291802306be3e79812ca64e39effbb7dea1c19bb7cd1e42b&amp;amp;X-Amz-SignedHeaders=host&amp;amp;x-id=PutObject&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fileUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;358c2942-4ced-421e-9a6f-edbf94c55dff&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. End upload session&lt;/strong&gt;&lt;br&gt;
Now, transfer files to the website storage bucket, which is used as a source for deployment to a staging (preview) environment.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/hosting/websites/:websiteUuid/upload/:sessionUuid/end&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;directSync&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: true
}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b64b1c07-1a8a-4b05-9e3b-3c6a519d6ff7&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Deploy website&lt;/strong&gt;&lt;br&gt;
Next, utilize endpoint to trigger website deployment into specific a environment.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/hosting/websites/:websiteUuid/deploy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;environment&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: 1
}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;32eff81a-6b0b-4a92-a5cb-e5cebf6d6c28&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;websiteId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bucketId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;62&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;environment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deploymentStatus&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Get deployment&lt;/strong&gt;&lt;br&gt;
Now, trigger endpoint to initiate deployment.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/hosting/websites/:websiteUuid/deployments/:deploymentId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2d7d1b0c-15b1-4816-9aec-857182c7b617&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bucketId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;62&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;environment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deploymentStatus&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;QmY3KF4F6Ap5HbrwWpq8dTVaR65Cd674jYXKBayNynDASJ&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;size&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;289&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Get website&lt;/strong&gt;&lt;br&gt;
Finally, get your website by triggering the endpoint to return basic website data, along with IPNS links.&lt;/p&gt;

&lt;p&gt;🔻 cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;GET&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.apillon.io/hosting/websites/:websiteUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization: Basic :credentials&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔻 Response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0eb223ce-51c0-4a9b-96ce-331a1cd99603&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My test page&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;domain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bucketUuid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;57aef0fc-84cb-4564-9af2-0f7bfc0ef729&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ipnsStagingLink&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://ipfs.apillon.io/ipns/k2k4r8p6fvcyq5qogaqdtvmqn5vyvyy3khut1llkrz13ls16ocp4gojx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ipnsProductionLink&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://ipfs.apillon.io/ipns/k2k4r8ng8nqexubrmbwnhsuu1d6n4ebgnxsbdcu9gxk8uv3l67098hge&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it, in just a few steps, you have upgraded your website's hosting to a decentralized level.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;Dive into specifics of &lt;a href="https://wiki.apillon.io/build/3-apillon-api.html#web3-hosting-api"&gt;Web3 Hosting API&lt;/a&gt; and connect with Crust Network's decentralized storage to host your website or app.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6PTo-VUT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jhxgerxjlmeblrukykav.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6PTo-VUT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jhxgerxjlmeblrukykav.gif" alt="apillon-web3-hosting-api-wiki" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 access the APIllon way
&lt;/h2&gt;

&lt;p&gt;Apillon API provides straightforward connectivity to Polkadot parachain services while respecting the standard development workflow.&lt;/p&gt;

&lt;p&gt;By accessing Web3 services via APIs, you can launch your Web3 project faster and with hardly anything to break since you control all the code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.gg/yX3gTw36C4"&gt;Let us know&lt;/a&gt; how you find Apillon APIs and build away!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wiki.apillon.io/build/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---Nm_0bQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vco5ndg41yb6ssg2lue.png" alt="apillon-go-to-wiki-cta" width="237" height="56"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zhIIggJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/im1y2bkeuep1ga6luj4z.png" alt="apillon-proceed-to-dashboard-cta" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://blog.apillon.io/apillon-features-api-calls-to-web3-services-c99ab6379b03"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Apillon Platform up close: Web3 services</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Fri, 10 Mar 2023 16:39:49 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-platform-up-close-web3-services-ib7</link>
      <guid>https://dev.to/apillon/apillon-platform-up-close-web3-services-ib7</guid>
      <description>&lt;p&gt;&lt;em&gt;Apillon's Web3 services are ready-to-use access points to Web3 technologies and everything needed for a few-click integration.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Web3 is more than a thing, it's a universe of things. Among those, Web3 technologies are what powers all Web3 tools, programs, software, apps, games, NFTs, metaverse, basically everything a user or builder interacts with in a decentralized way.&lt;/p&gt;

&lt;p&gt;In this Web3-verse, &lt;a href="https://polkadot.network/"&gt;Polkadot&lt;/a&gt; is one of the central figures and has contributed immensely to the ecosystem by introducing a network of powerful, niche-specific, and cross-chain communicatable parachains.&lt;/p&gt;

&lt;p&gt;In this post, we explore what a Web3 service constitutes in Apillon and what it brings to the builder community.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Web3 service?
&lt;/h2&gt;

&lt;p&gt;The key to understanding Web3 services in the context of Apillon is knowing what the Polkadot ecosystem (and many other Web3 players) currently lacks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy integration
&lt;/h3&gt;

&lt;p&gt;If you decide to create a Web3 product integrating a Polkadot parachain, you're off to a long and possibly arduous journey. The obstacles, especially for newbies, &lt;a href="https://dev.to/apillon/how-apillon-changes-the-way-web3-products-are-built-24m6"&gt;have been discussed&lt;/a&gt; already, but in short, it takes great skill and knowledge to navigate the technology, protocols, requirements, and frameworks before you can launch, test, tweak and update the outcome.&lt;/p&gt;

&lt;p&gt;To lower the barrier to entry, Apillon defines Web3 services as dedicated Web3 solutions, that is, packages containing cutting-edge Web3 technologies together with their SDKs, APIs, and documentation, delivered in a few-click form for faster implementation.&lt;/p&gt;

&lt;p&gt;As such, they introduce a new way for builders to implement Web3 technologies, bypassing the typical obstacles and delivering results quicker and with less toll on resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Joint integration
&lt;/h3&gt;

&lt;p&gt;As mentioned, the Polkadot Network has served as a launchpad for multiple parachains, perfected to serve a unique use case. However, while each parachain is optimized for a niche utility, they are not as easily integrated jointly within the same product. So, when incorporating two or more within an app, for example, you need to master each on their own &lt;em&gt;and&lt;/em&gt; make them deliver the intended features jointly on a single interface.&lt;/p&gt;

&lt;p&gt;To let you to employ multiple Web3 technologies in your products, Apillon's Web3 services are mutually connectable and seamlessly work together.&lt;/p&gt;

&lt;p&gt;This way, you can create apps that, for instance, are hosted decentrally and thus unstoppable while delivering wallet-based user authentication or other Web3 features, all in just a few clicks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B7oFRXNd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pxvrdr8mfikwz1utu77z.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B7oFRXNd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pxvrdr8mfikwz1utu77z.gif" alt="apillon-web3-services" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does Apillon source Web3 services from?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Polkadot-originated services
&lt;/h3&gt;

&lt;p&gt;The Apillon platform provides access to Web3 technologies primarily by &lt;a href="https://polkadot.network/"&gt;Polkadot&lt;/a&gt;'s parachains, that is, niche-specific XCM chains that allow cross-chain data exchange and are optimized for specific purposes.&lt;/p&gt;

&lt;p&gt;Apillon abstracts their innate coding complexity into a suite of sleek and easy-to-use development tools and API connectivity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qn1VXsse--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gc60ap4eq6b375otpw4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qn1VXsse--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gc60ap4eq6b375otpw4v.png" alt="apillon-api-connectivity-to-parachains" width="880" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you get is a direct access to the powerful functionalities of decentralized technologies, now turned into tangible, ready-to-use commands on a sleek user interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HoB-Leor--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lns72e2ye80quw47ljgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HoB-Leor--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lns72e2ye80quw47ljgo.png" alt="apillon-web3-storage-by-crust-network" width="880" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Room for more
&lt;/h3&gt;

&lt;p&gt;While primarily supporting Polkadot parachains, the Apillon platform is agnostic by design towards service providers and technically capable of integrating external chains, tools, etc.&lt;/p&gt;

&lt;p&gt;This means you could choose among multiple providers of a particular Web3 service or let the platform curate the choice based on your project's specifics. Plus, the Apillon development toolbox could be expanded with dedicated tools and UX-enhancing Web3 features that are not purely Web3 services in their essence, such as digital wallets.&lt;/p&gt;

&lt;p&gt;As the Apillon team and &lt;a href="https://blog.apillon.io/apillon-platform-governance-key-takeaways-e63816522536"&gt;governing members&lt;/a&gt; steer the platform's evolution and expansion, the newly added Web3 services should improve the adoption of Apillon and Web3 technologies among the builders' community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Web3 services does Apillon provide?
&lt;/h2&gt;

&lt;p&gt;At the time of writing, the Apillon platform is in the &lt;a href="https://blog.apillon.io/apillon-launches-an-invitation-only-closed-beta-of-the-web3-development-platform-a075c38273a3"&gt;Beta stage&lt;/a&gt; and delivers just a couple of Web3 services sufficient for testing key features.&lt;/p&gt;

&lt;p&gt;In the upcoming platform versions, more Web3 services will be integrated and accessible to a broader audience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web3 Storage
&lt;/h3&gt;

&lt;p&gt;Apillon Web3 Storage is a decentralized storage service powered by &lt;a href="https://crust.network/"&gt;Crust Network&lt;/a&gt;. By storing website, app, or other files on a decentralized global network of nodes, you can improve their accessibility and mitigate the risk of unauthorized access.&lt;/p&gt;

&lt;p&gt;Apillon Web3 Storage service implements &lt;a href="https://ipfs.tech/"&gt;IPFS&lt;/a&gt; and &lt;a href="https://crust.network/"&gt;Crust Network&lt;/a&gt; to pin files on multiple IPFS nodes. Plus, it introduces the concept of storage buckets, allowing for more dynamic use of decentralized storage and Web3 development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Learn more about &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b"&gt;Web3 Storage service on Apillon Beta&lt;/a&gt;...&lt;/p&gt;

&lt;p&gt;🔎 ... and &lt;a href="https://blog.apillon.io/crust-network-decentralized-storage-3d6de58b20e7"&gt;Crust Network in general&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Web3 Hosting
&lt;/h3&gt;

&lt;p&gt;As an application of Web3 Storage, Apillon Web3 Hosting is a decentralized hosting service powered, again, by &lt;a href="https://crust.network/"&gt;Crust Network&lt;/a&gt;. Hosting your website or app on a decentralized network of globally scattered nodes makes it unstoppable and defiant against single-point-of-access censorship.&lt;/p&gt;

&lt;p&gt;Apillon Web3 Hosting implements &lt;a href="https://ipfs.tech/"&gt;IPFS&lt;/a&gt; and [Crust Network]((&lt;a href="https://crust.network/"&gt;https://crust.network/&lt;/a&gt;) to pin files on multiple IPFS nodes. Besides Apillon-native storage buckets, a more dynamic storage option, it also delivers straightforward access to &lt;a href="https://docs.ipfs.tech/concepts/ipns/#mutability-in-ipfs"&gt;IPNS&lt;/a&gt;, making way to on-demand file mutability.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Learn more about &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk"&gt;Web3 Hosting service on Apillon Beta&lt;/a&gt;...&lt;/p&gt;

&lt;p&gt;🔎 and &lt;a href="https://dev.to/apillon/how-you-can-keep-your-decentrally-stored-and-hosted-website-up-to-date-with-ipfs-ipns-on-apillon-15ce"&gt;IPFS &amp;amp; IPNS additionally integrated into the Apillon platform&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Web3 Computing
&lt;/h3&gt;

&lt;p&gt;The post-Beta versions of the Apillon platform will deliver more Web3 services, including Web3 Computing.&lt;/p&gt;

&lt;p&gt;Decentralized cloud computing powered by &lt;a href="https://www.phala.network/"&gt;Phala Network&lt;/a&gt; will give you the means to create and launch high-performing and private smart contracts in even the most complex applications.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Learn more about &lt;a href="https://blog.apillon.io/phala-network-decentralized-computing-cloud-ae42969ee156"&gt;Phala Network and decentralized computing&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Web3 Authentication
&lt;/h3&gt;

&lt;p&gt;And, another Web3 service planned to take a slot on the Apillon platform is Web3 Authentication powered by the &lt;a href="https://www.kilt.io/"&gt;KILT Protocol&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The easy access to KILT's decentralized identifiers or DIDs will allow you to enrich your app or website with decentralized user identification or authentication of digital files and assets. This would improve the security of online data exchange while empowering your apps' users to be custodians of their valuables, identity included.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web3 services on demand
&lt;/h3&gt;

&lt;p&gt;As a Web3 development enabler, Apillon obviously strives to expand the builders' playground with more services, tools, features, and opportunities.&lt;/p&gt;

&lt;p&gt;Some of the planned services include Web3 data integrity and generating NFT collections, while others will be approved through community vote and Apillon's internal decision-making.&lt;/p&gt;

&lt;p&gt;And, when &lt;a href="https://blog.apillon.io/apillon-platform-governance-key-takeaways-e63816522536"&gt;Apillon governance&lt;/a&gt; rolls out to a full extent, everyone will have their say in cherry-picking the Web3 services and tools to be added to the Apillon platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can you build with Apillon Web3 services?
&lt;/h2&gt;

&lt;p&gt;Each Apillon-supported Web3 service caters to a set of niche use cases. But why go with just one when multiple can be combined and integrated into a single product and adopted by the same user community?&lt;/p&gt;

&lt;p&gt;You could either create a Web3 product from scratch or tweak just a feature or two of an existing app or website and bring it to a Web3 level, increasing its security, user privacy, execution, and transparency along the way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KSuR1l-t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pdovukxtul4bwbtdyn12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KSuR1l-t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pdovukxtul4bwbtdyn12.png" alt="apillon-build-web3-products-social-network-example" width="880" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the context of the Apillon platform, here is what you could build with decentralized technologies.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Web3 Storage service&lt;/strong&gt;, you could create a blockchain-based app or website that needs to sustain heavy loads of asset and user data, for example, a metaverse-based social platform or an NFT marketplace.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Learn how &lt;a href="https://dev.to/apillon/why-decentralized-storage-matters-for-nft-metadata-and-your-next-nft-collection-30dg"&gt;decentralized storage boosts the value of NFT metadata&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Using the &lt;strong&gt;Web3 Computing service&lt;/strong&gt;, you could build apps, games, or NFT marketplaces that support advanced privacy features and secret messaging. Decentralized computing could help you build Web3 NFT rendering farms, Web3 game servers, game engines, and more.&lt;/p&gt;

&lt;p&gt;Or, with the &lt;strong&gt;Web3 Authentication service&lt;/strong&gt;, you could onboard users to your app using a self-sovereign digital identity, either as a sole option or together with standard Web2 options, such as email or social log-in, for enhanced user privacy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Discover more about the kind of &lt;a href="https://dev.to/apillon/what-kind-of-web3-products-could-you-build-with-apillon-55la"&gt;Web3 products could you build with Apillon&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How to integrate Web3 services into your project?
&lt;/h2&gt;

&lt;p&gt;While the original technical nature of supported parachains is quite complex, Apillon boils it down to just a few commands, API access, ample SDKs, and easy-to-navigate documentation.&lt;/p&gt;

&lt;p&gt;Instead of having to research native docs, configure and integrate the parachain, manage its native token and file expiry, test, launch, tweak, and keep upgrading to conform to protocol upgrades, you could simply call a specific function, employ parachain feature, and launch.&lt;/p&gt;

&lt;p&gt;Such a novel way of Web3 development significantly simplifies the go-to-market trajectory of your Web3 project. Plus, Apillon APIs are designed to be supported by any development framework and adapt to your working environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jsfxmd2E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g32s0r5qy2tq0crhw53t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jsfxmd2E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g32s0r5qy2tq0crhw53t.png" alt="apillon-crust-api-call-function-get-storage" width="880" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Apillon Beta platform incorporates the following APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.apillon.io/build/3-apillon-api.html#web3-storage-api"&gt;Web3 Storage service API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.apillon.io/build/3-apillon-api.html#web3-hosting-api"&gt;Web3 Hosting service API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In upcoming versions, more APIs for straightforward access to parachain services will be added.&lt;/p&gt;

&lt;p&gt;Together with ample SDKs and documentation for faster and more streamlined integration of Web3 services, Apillon APIs allow you to create fully functional Web3 products with lower error risk and less need for external auditing.&lt;/p&gt;

&lt;p&gt;Read more in &lt;a href="https://wiki.apillon.io/"&gt;Apillon Wiki&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 at your fingertips
&lt;/h2&gt;

&lt;p&gt;At Apillon, we believe Web3 development should be less intimidating and more empowering. Replacing the need to dive deep into the technical abyss of Polkadot parachains, Apillon lets you navigate the Web3 sea by turning the abstract code into clickable Web3 services at your service.&lt;/p&gt;

&lt;p&gt;Anyone with standard web development knowledge and fluency in the most common programming languages like Javascript or Python can start creating a Web project today and launch it by tomorrow.&lt;/p&gt;

&lt;p&gt;Feel free to Beta-test the Apillon platform and experience the dev-friendly way of Web3 building.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SfB0zTpd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/me890o7jp38ortaf8y7s.png" alt="apillon-cta-proceed-to-dashboard" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://blog.apillon.io/apillon-platform-up-close-web3-services-f77530dd274e"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Apillon is a now a fully Web3-hosted, unstoppable website. Here is why this matters.</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Wed, 01 Mar 2023 12:20:33 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-is-a-now-a-fully-web3-hosted-unstoppable-website-here-is-why-this-matters-2cpi</link>
      <guid>https://dev.to/apillon/apillon-is-a-now-a-fully-web3-hosted-unstoppable-website-here-is-why-this-matters-2cpi</guid>
      <description>&lt;p&gt;&lt;em&gt;True to Apillon's pursuit of utilizing decentralized features wherever deemed appropriate, we migrated the apillon.io website to Web3-based hosting.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;As a Web3 service provider, it's only appropriate for Apillon to live by its values. The apillon.io website is upgraded with a fully decentralized, Web3 hosting service. And it was done for two reasons: to make the website unstoppable, and to lead by example and inspire online entities to do the same.&lt;/p&gt;

&lt;p&gt;In this post, we explain why decentralized hosting of websites adds to the open and free internet and how easy it is to upgrade a website to Web3.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is decentralized hosting?
&lt;/h2&gt;

&lt;p&gt;Let's start with the basics. Every website consists of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;web files (HTML, CSS, JavaScript, text, images, or video)&lt;/li&gt;
&lt;li&gt;web hosting (storage of web files on a server)&lt;/li&gt;
&lt;li&gt;domain name (address or the pathway that pings the address of the web server)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Decentralized or Web3-based website hosting means that web files are stored on a decentralized network of nodes rather than on a centralized, single-point-of-access (or failure) server.&lt;/p&gt;

&lt;p&gt;In the process of migrating the apillon.io website from centralized to Web3 hosting, the following technologies were implemented.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPFS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.ipfs.tech/" rel="noopener noreferrer"&gt;InterPlanetary File System (IPFS)&lt;/a&gt; is a peer-to-peer distributed file system that allows website entities to store their data and files on their hard drives or in the cloud.&lt;/p&gt;

&lt;p&gt;It connects all participating computer devices with the same system files. When a website is uploaded to IPFS, its files get split into smaller chunks and cryptographically hashed, while the version of the files is synced with all participating computers worldwide. A website hosted on IPFS continues living on the network even if its creator's computer gets taken down.&lt;/p&gt;

&lt;p&gt;Contrary to central hosting solutions, where location-based addressing from a remote server could take time, IPFS's content addressing retrieves data faster and cheaper as it pings to the closest node in the network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Crust Network
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://crust.network/" rel="noopener noreferrer"&gt;Crust Network&lt;/a&gt; is a decentralized cloud storage provider in the Polkadot ecosystem. It supports multiple storage-layer protocols, including IPFS, and delivers instantly accessible on-chain storage capabilities.&lt;/p&gt;

&lt;p&gt;One of the main functions of Crust Network is hosting service for websites or apps. It helps reduce cybersecurity risks while protecting the front end. With Crust, website or app replications are distributed globally, which ensures their stability and mitigates the risk of single-point-of-failure attacks.&lt;/p&gt;

&lt;p&gt;As a dStorage protocol on Polkadot Network, Crust provides a native cross-chain communication pallet, further increasing a website or app's cross-chain data exchange.&lt;/p&gt;

&lt;h3&gt;
  
  
  Storage bucket
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://wiki.apillon.io/build/2-web3-services.html#storage-bucket" rel="noopener noreferrer"&gt;Storage buckets&lt;/a&gt; are an element of the &lt;a href="https://app.apillon.io/login" rel="noopener noreferrer"&gt;Apillon platform&lt;/a&gt; that helps users manage file storage on Web3 more dynamically.&lt;/p&gt;

&lt;p&gt;Built on the underlying Crust Network and IPFS protocol, it allows easy file upload and management in Web3-hosted websites or apps.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 Learn more about storage buckets. 👉 &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b"&gt;Apillon Platform Closed Beta walk-through - Web3 Storage&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why should websites decentralize their hosting?
&lt;/h2&gt;

&lt;p&gt;Storing web files on a distributed network of nodes delivers several advantages to both website owners and users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple replications of web files on a network of thousands of participating servers ensure that a website or app remains accessible even during service outages of individual servers, guaranteeing its continuous uptime.&lt;/li&gt;
&lt;li&gt;With no single point of access, an individual or central authority cannot cut the access or pathway to the website.&lt;/li&gt;
&lt;li&gt;File storage is distributed globally and not region-based, preventing central authority from destroying the storage or manipulating a website or app's files, which protects online content against censorship.&lt;/li&gt;
&lt;li&gt;Thanks to data fragmentation, unauthorized parties can't access website information, increasing its security and privacy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By cutting ties with centralized hosting providers and single points of access, Web3-hosted websites tie new strings with a global, decentralized network of storage nodes.&lt;/p&gt;

&lt;p&gt;The backing of such a network allows websites to be unstoppable, permanently accessible, and perform better.&lt;/p&gt;

&lt;p&gt;And &lt;a href="http://apillon.io" rel="noopener noreferrer"&gt;apillon.io&lt;/a&gt; has joined the club, too.&lt;/p&gt;

&lt;h2&gt;
  
  
  apillon.io, a fully Web3-hosted website
&lt;/h2&gt;

&lt;p&gt;The official Apillon website, &lt;a href="http://apillon.io" rel="noopener noreferrer"&gt;apillon.io&lt;/a&gt;, is now hosted fully on Web3.&lt;/p&gt;

&lt;p&gt;It was moved from AWS to the Apillon Web3 Hosting service, powered by IPFS and Crust Network.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to see apillon.io hosted on IPFS?
&lt;/h3&gt;

&lt;p&gt;You can check the Apillon domain at &lt;a href="https://dnslink.io/" rel="noopener noreferrer"&gt;https://dnslink.io/&lt;/a&gt; and see the DNS link pointing to IPNS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcb995nmq1ckc220thdy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcb995nmq1ckc220thdy2.png" alt="apillon-dnklink-ipns-check" width="747" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides, Apillon's IPFS-based hosting is shown in web server response header. It returns the IPFS address of the folder containing the apillon.io website content (see &lt;code&gt;x-ipfs-roots&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0zdbfzx39c0vsmdd13g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0zdbfzx39c0vsmdd13g.png" alt="apillon-web-server-response-header-ipfs" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or, if you're using Brave browser, you can see an IPFS icon in the right corner of the search field when you navigate to &lt;a href="//apillon.io"&gt;apillon.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jq7l70ph5rubbd34usn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jq7l70ph5rubbd34usn.png" alt="apillon-brave-browser-search-field-ipfs-icon" width="704" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you click on it, you proceed to an IPFS-hosted version of the Apillon website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh7txsreho3bcr6u6kid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh7txsreho3bcr6u6kid.png" alt="apillon-website-ipfs-url-field" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that apillon.io is hosted decentrally on IPFS, it could be accessed from any IPFS gateway and thus unstoppable.&lt;/p&gt;

&lt;h3&gt;
  
  
  How we migrated apillon.io to IPFS?
&lt;/h3&gt;

&lt;p&gt;Using the &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk"&gt;Apillon Web3 Hosting service&lt;/a&gt;, we migrated the files and contents of Apillon's static website to the decentralized network of hosting servers.&lt;/p&gt;

&lt;p&gt;Once the contents were uploaded, all website files were pinned to the IPFS gateway in a single step. They were pushed to the staging phase, allowing us to preview the final outcome and spot bugs that needed a clean-up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ogbd849yfygp77k8kjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ogbd849yfygp77k8kjl.png" alt="apillon-platform-apillon-website-ipfs-hosting" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once everything looked good, we moved the website from the staging to the production phase, where it went public and visible under the apillon.io domain.&lt;/p&gt;

&lt;p&gt;Lastly, we linked the apillon.io domain to website contents, and configured it. To set it up for decentralized, Web3-based hosting with Apillon, the DNS records were changed accordingly.&lt;/p&gt;

&lt;p&gt;And that's pretty much it.&lt;/p&gt;

&lt;p&gt;Within an hour from start to finish, the Apillon website was hosted in a fully decentralized manner and thus unstoppable from outages, censorship, or other disruptors of online accessibility.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 You can find out more about the process and follow it step by step to host a static website on a decentralized network with the in-depth tutorial by Apillon CMO Nino Kutnjak. 👉 &lt;a href="https://blog.apillon.io/build-deploy-an-unstoppable-blog-on-apillon-hosting-v0-1-draft-9a8bf7d994c0" rel="noopener noreferrer"&gt;Build &amp;amp; deploy an unstoppable blog site with Apillon Web3 Hosting&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔎 Learn more about Web3 Hosting service in Apillon Closed Beta. 👉 &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk"&gt;Apillon Platform Closed Beta walk-through - Web3 Hosting&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;☝ Note:️ In Apillon Closed Beta, only hosting of static websites is supported. Closed Beta delivers no guarantees related to functionalities or access and is intended for testing purposes only. Beta features also come with several limitations, which will be removed with each platform update.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Make internet unstoppable again
&lt;/h2&gt;

&lt;p&gt;Taking advantage of the grand opportunities that decentralized technologies bring to online entities, creators, and users, the Apillon website's backbone now sits on the Web3 level.&lt;/p&gt;

&lt;p&gt;But, more importantly, it demonstrates the ease of the Web3 transition to increase the accessibility and security of online contents.&lt;/p&gt;

&lt;p&gt;Anyone can host a website or app on Web3 and help it defy third-party decision-making over its fate. The more online sites regain self-sovereignty, the faster the web collective can bring back the free and open internet.&lt;/p&gt;

&lt;p&gt;Start simple and benefit from a decentralized exchange of data, including that powering your online presence, be it a website, app, or identity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpjae38l2rp2kn6dgu492.png" alt="apillon-Proceed-to-Apillon-dashboard" width="333" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally posted on &lt;a href="https://blog.apillon.io/apillon-is-a-now-a-fully-web3-hosted-unstoppable-website-here-is-why-this-matters-5178b9916ebd" rel="noopener noreferrer"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>google</category>
      <category>firebase</category>
      <category>ai</category>
    </item>
    <item>
      <title>How you can keep your decentrally stored and hosted website up-to-date with IPFS &amp; IPNS on Apillon</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Sun, 19 Feb 2023 04:47:29 +0000</pubDate>
      <link>https://dev.to/apillon/how-you-can-keep-your-decentrally-stored-and-hosted-website-up-to-date-with-ipfs-ipns-on-apillon-15ce</link>
      <guid>https://dev.to/apillon/how-you-can-keep-your-decentrally-stored-and-hosted-website-up-to-date-with-ipfs-ipns-on-apillon-15ce</guid>
      <description>&lt;p&gt;&lt;em&gt;Updatability of data is essential, but tricky to achieve in Web3. With Apillon, you can store online files decentrally and keep them up to date without a heavy toll on storage, costs, or development time.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;It's one thing to upload and host a file, website, or app to a decentralized network to increase accessibility and security. But quite another to keep them regularly updated.&lt;/p&gt;

&lt;p&gt;Here is how Apillon achieves decentralized storage with the option to frequently and cost-effectively update decentrally hosted websites and apps by integrating IPFS and IPNS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data mutability matters, even more so in Web3
&lt;/h2&gt;

&lt;p&gt;Digital assets, files, places, and tools are comprised of data that take up online storage space. And most require frequent updates, for example, websites, apps, and digital files like NFTs, and execute them through built-in upgrades or user contributions.&lt;/p&gt;

&lt;p&gt;Much like in a traditional online environment, data should remain controllably mutable in Web3 to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stay up-to-date (e.g., websites frequently updating content)&lt;/li&gt;
&lt;li&gt;Deliver built-in functionalities (e.g., in-game NFTs enabling status and ownership updates)&lt;/li&gt;
&lt;li&gt;Allow user participation (e.g., apps enabling user-originated content uploads and editing)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;Learn more about why NFT metadata should be stored in a decentralized way while remaining updateable in the in-depth post by Apillon CTO &lt;a href="https://dev.to/momannn"&gt;Tadej Vengust&lt;/a&gt;. 👉 &lt;a href="https://dev.to/apillon/why-decentralized-storage-matters-for-nft-metadata-and-your-next-nft-collection-30dg"&gt;Why decentralized storage matters for NFT metadata and your next NFT collection&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The ability to update data of online assets, files, and spaces is essential. But things get a bit complicated in Web3. How to achieve this on websites or apps that are hosted and store their data and files decentrally?&lt;/p&gt;

&lt;h2&gt;
  
  
  Decentralized file storage
&lt;/h2&gt;

&lt;p&gt;With Apillon, you can host your website or app and store its files through &lt;strong&gt;IPFS&lt;/strong&gt; and &lt;strong&gt;Crust Network&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPFS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://ipfs.tech/" rel="noopener noreferrer"&gt;IPFS&lt;/a&gt; is a distributed system that allows you to store and access online files, websites, and apps. When you upload a file, it gets a new hash and content identifier (CID), a unique, immutable fingerprint pointing to it. But IPFS could be difficult to implement and doesn't inherently support file edits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Crust Network
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://crust.network/" rel="noopener noreferrer"&gt;Crust Network&lt;/a&gt; is a decentralized cloud storage provider on the Polkadot network. It supports multiple storage-layer protocols, including IPFS, and delivers instantly accessible on-chain storage functions. Crustʼs technical stack also supports data manipulation and computing.&lt;/p&gt;

&lt;p&gt;Ok, but what about the editability of data stored on a decentralized storage?&lt;/p&gt;

&lt;h2&gt;
  
  
  Data mutability
&lt;/h2&gt;

&lt;p&gt;Every time you upload a file or website on a decentral network of nodes through IPFS, it gets a new hash and a content identifier (CID) used as the content address.&lt;/p&gt;

&lt;p&gt;And here is the drawback. IPFS allows you only to upload files, not to update them. What you uploaded earlier still exists on IPFS under the same CID, while a newly uploaded file, even if it's just a new version of the existing file, gets a new CID. And every new file or website upload on Crust Network gets pinned to all contributing nodes without replacing its older versions.&lt;/p&gt;

&lt;p&gt;So whenever you share a link to your IPFS-based file or website, it always points to the CID or the version it assumed when uploaded. In order to access the latest version of the file or website, you would have to share a new CID that was generated with the latest upload.&lt;/p&gt;

&lt;p&gt;Generating a new CID for every file or website upload takes a toll on the storage space, and it's simply impractical and costly.&lt;/p&gt;

&lt;p&gt;The Apillon platform solves this by further integrating &lt;strong&gt;IPNS&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPNS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.ipfs.tech/concepts/ipns/" rel="noopener noreferrer"&gt;IPNS&lt;/a&gt;, the InterPlanetary Name System, allows you to update data and files through mutable pointers without changing the CID, saving transaction fees and time.&lt;/p&gt;

&lt;p&gt;IPNS's mutable pointers get updated every time a website or app publishes a change and work as updateable links that retain their functionality of content addressing. This way, when you share a link to your decentrally hosted website, it always points to the latest version, so you can rest assured the users access its up-to-date contents.&lt;/p&gt;

&lt;p&gt;Now, with IPNS-based uploads, the old version of a file, website, or app does not get automatically deleted. On the Apillon platform, the old versions of Web3-hosted websites are deleted after the 6-month period. Or, upon user decision, they can remain permanently accessible, an essential feature to support the self-sovereignty of decentralized storage users.&lt;/p&gt;

&lt;p&gt;Every Web3 project planning to upload, store, and host websites, apps, or other files that require content updates should consider utilizing IPNS, too. And with Apillon, it's just a matter of clicks.&lt;/p&gt;

&lt;h2&gt;
  
  
  IPFS &amp;amp; IPNS on the Apillon platform
&lt;/h2&gt;

&lt;p&gt;To sum up, Web3 assets, files, websites, and apps that aim to deliver the intended value, good security, and high agility should store and host data in a decentralized way &lt;em&gt;while&lt;/em&gt; enabling frequent and easy updates.&lt;/p&gt;

&lt;p&gt;At the time of writing, the Apillon platform delivers the IPFS and IPNS connectivity in its &lt;strong&gt;Web3 Hosting service&lt;/strong&gt;. In future upgrades, IPFS and IPNS will also be made available in the Web3 Storage service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apillon Web3 Hosting with file updateability
&lt;/h2&gt;

&lt;p&gt;With Apillon, you can host your website or app on a decentralized network to make it permanently accessible, unstoppable from third-party impact, and easily updatable.&lt;/p&gt;

&lt;p&gt;Apillon Web3 Hosting service implements AWS S3 as a cache to optimize the upload of large files, &lt;a href="https://ipfs.tech/" rel="noopener noreferrer"&gt;IPFS&lt;/a&gt;, and &lt;a href="https://crust.network/" rel="noopener noreferrer"&gt;Crust Network&lt;/a&gt; to pin files on multiple IPFS nodes. Besides, it supports &lt;a href="https://docs.ipfs.tech/concepts/ipns/" rel="noopener noreferrer"&gt;IPNS&lt;/a&gt; for frequent updates of uploaded files and data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔎 &lt;em&gt;Learn more about Web3 Hosting in the Apillon Platform Closed Beta, where you can test decentralized hosting features and deliver feedback for its improvement. 👉 &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk"&gt;Apillon Platform Closed Beta walk-through — Web3 Hosting&lt;br&gt;
&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Among the first on the market, Apillon lets you take advantage of Crust Network, IPFS, &lt;em&gt;and&lt;/em&gt; IPNS at one spot to launch, host, and update your Web3 website or app easily, faster, and at a significantly lower price than doing it manually.&lt;/p&gt;

&lt;p&gt;Test the waters and use Apillon for your next Web3 project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.apillon.io/login" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxopk1zd839trllrx8d4q.png" alt="apillon-create-account" width="324" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://blog.apillon.io/how-apillon-platform-supports-web3-file-updates-with-ipfs-ipns-53534f985be" rel="noopener noreferrer"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>google</category>
      <category>opensource</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Apillon Platform Closed Beta walk-through — Web3 Hosting</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Wed, 01 Feb 2023 11:40:06 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk</link>
      <guid>https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-hosting-12fk</guid>
      <description>&lt;p&gt;&lt;em&gt;The Apillon Platform Closed Beta is live and seeks feedback from brave testers. Learn more about the Web3 Hosting service, test, suggest, and help us improve.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;In Apillon Closed Beta, you can try the platform’s Web3 services before it’s ready for public launch. We count on every participant to help us improve the platform’s offering and add to faster adoption of Web3, one feedback at a time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Read more 👉 &lt;a href="https://blog.apillon.io/apillon-launches-an-invitation-only-closed-beta-of-the-web3-development-platform-a075c38273a3" rel="noopener noreferrer"&gt;Apillon launches an invitation-only Closed Beta of the Web3 development platform&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this walk-through guide, we take you from account registration to deploying your website with Web3 Hosting, one of the services available in Apillon Closed Beta.&lt;/p&gt;

&lt;p&gt;But before we begin, you should keep in mind a few things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good to know
&lt;/h2&gt;

&lt;p&gt;In its current state, Apillon is a Web3 hybrid platform. This means that certain services are still run by centralized providers to ensure fast development and optimal UI. However, the platform’s infrastructure will gradually become fully decentralized, and newer versions will deliver more services for faster development of Web3 products.&lt;/p&gt;

&lt;p&gt;Moreover, Apillon Closed Beta delivers no guarantees, either regarding functionalities or access, and it is intended for testing purposes only. Beta features are limited in some aspects and will become more accessible as the platform evolves.&lt;/p&gt;

&lt;p&gt;Now, let’s dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Account log in and access code
&lt;/h2&gt;

&lt;p&gt;To test the features available in the Apillon Closed Beta, you first need an Apillon account. Go to &lt;a href="http://app.apillon.io/" rel="noopener noreferrer"&gt;http://app.apillon.io/&lt;/a&gt; to create one, or simply log in if you are already a registered user.&lt;/p&gt;

&lt;p&gt;At the bottom of the intro page, you can find a &lt;strong&gt;Closed Beta code&lt;/strong&gt;. Copy and paste it to our closed-beta channel on &lt;a href="https://discord.com/invite/yX3gTw36C4" rel="noopener noreferrer"&gt;Apillon Discord&lt;/a&gt;. Once you receive an email invitation, you can access Closed Beta and the available Web3 services.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; We will be rolling out invites gradually, so be patient — it might take a day or two before your invite reaches your inbox.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3t9pbhvslj7q5f7tfuh7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3t9pbhvslj7q5f7tfuh7.png" alt="apillon-closed-beta-web3-hosting-access-code" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the door opens, you can start plotting your first Web3 project with Apillon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Web3 project
&lt;/h2&gt;

&lt;p&gt;Start by adding a new project. In the top left corner of the screen, click &lt;strong&gt;Add new project&lt;/strong&gt;, set its name and description in the pop-up window, and click &lt;strong&gt;Create new project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6l8fsnog6ikc8k362owd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6l8fsnog6ikc8k362owd.png" alt="apillon-closed-beta-create-project" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once done, you can check more details under &lt;strong&gt;Project overview&lt;/strong&gt; in the menu on the left.&lt;/p&gt;

&lt;p&gt;Now, it’s time to attach Web3 services.&lt;/p&gt;

&lt;p&gt;In the Closed Beta, you can attach Web3 Storage and Web3 Hosting service. The process of Web3 Storage was described in &lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b"&gt;our previous post&lt;/a&gt;. And here, we take a look at the Web3 Hosting service.&lt;/p&gt;

&lt;p&gt;Let’s begin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 Hosting
&lt;/h2&gt;

&lt;p&gt;Apillon Web3 Hosting is a Web3-based hosting service that allows you to increase the accessibility of your website or app and make it unstoppable, as it gets hosted on a decentralized network of nodes around the globe.&lt;/p&gt;

&lt;h3&gt;
  
  
  Underlying technologies
&lt;/h3&gt;

&lt;p&gt;Apillon Web3 Hosting implements AWS S3 as a cache to optimize the upload of large files, &lt;a href="https://ipfs.tech/" rel="noopener noreferrer"&gt;IPFS&lt;/a&gt;, and &lt;a href="https://crust.network/" rel="noopener noreferrer"&gt;Crust Network&lt;/a&gt; to pin files on multiple IPFS nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IPFS&lt;/strong&gt;&lt;br&gt;
When you upload a file to &lt;a href="https://ipfs.tech/" rel="noopener noreferrer"&gt;IPFS&lt;/a&gt;, it gets split into smaller chunks and cryptographically hashed. It also receives a unique fingerprint called a content identifier (CID), which acts as a permanent record of your file as it is at that point in time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crust Network&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://crust.network/" rel="noopener noreferrer"&gt;Crust Network&lt;/a&gt; is a decentralized cloud storage provider on Polkadot. It supports multiple storage-layer protocols, such as IPFS, and delivers instantly accessible on-chain storage functions. Crustʼs technical stack also supports data manipulation and computing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage bucket&lt;/strong&gt;&lt;br&gt;
Decentralized hosting of a website or an app on Apillon is very similar to using storage buckets, a more dynamic way of managing file storage on Web3. It takes advantage of the underlying Crust Network and IPFS protocol to host your Web3 website or application.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Learn more about Web3 Storage and storage buckets.&lt;/em&gt; 👇&lt;br&gt;
&lt;em&gt;&lt;a href="https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b"&gt;https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Web3 website/app hosting process
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; At this point, only hosting of static websites is supported by Apillon Web3 Hosting service, while dynamic websites will be supported in future versions of Apillon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is what happens to your website or app when it’s hosted decentrally with Apillon:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uploaded files land on a reputable centralized cloud provider to ensure fast file capture.&lt;/li&gt;
&lt;li&gt;Once received, the files proceed to the Apillon node and become accessible through the IPFS gateway until moved from staging to production.&lt;/li&gt;
&lt;li&gt;Once the files move from staging to production, they proceed to the decentralized Apillon IPFS gateway, where Crust starts pinning and replicating them.&lt;/li&gt;
&lt;li&gt;A custom domain can be connected, which starts the SSL certificate generation process on the Apillon gateway.&lt;/li&gt;
&lt;li&gt;Your domain’s DNS records can be migrated to Apillon, and a website or app is launched with decentralized hosting.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Decentralized deployment
&lt;/h3&gt;

&lt;p&gt;Deploying a website or application with decentralized hosting on Apillon is just a matter of minutes and a few steps.&lt;/p&gt;

&lt;p&gt;First, log in to your &lt;a href="https://app.apillon.io/login" rel="noopener noreferrer"&gt;Apillon dashboard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the menu on the left, under &lt;strong&gt;Services&lt;/strong&gt;, navigate to &lt;strong&gt;Hosting&lt;/strong&gt;, and click &lt;strong&gt;Add first website&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70f9rukhu26zymcl0e8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70f9rukhu26zymcl0e8u.png" alt="apillon-closed-beta-web3-hosting-add-first-website" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the pop-up window, enter your webpage name, description, and domain name. Click &lt;strong&gt;Create webpage&lt;/strong&gt; and proceed to the deployment process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxa5tc3vui25mus4l2nou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxa5tc3vui25mus4l2nou.png" alt="apillon-closed-beta-web3-hosting-create-webpage" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, upload files and folders or drag and drop your static website files and wait for the upload to finish.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhxfdmj4rl02vv40nt72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhxfdmj4rl02vv40nt72.png" alt="apillon-closed-beta-web3-hosting-upload-files-folders" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For faster management and easier navigation, you can also create file directories. Click &lt;strong&gt;Create directory&lt;/strong&gt; on the right, set its name and description, and organize your files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9szikginjjh8hx9wnisb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9szikginjjh8hx9wnisb.png" alt="apillon-closed-beta-web3-hosting-create-directory" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the file upload is complete, Crust Network starts pinning and replicating files automatically.&lt;/p&gt;

&lt;p&gt;Next, proceed to move the uploaded website files to the staging phase. Click &lt;strong&gt;Deploy to staging&lt;/strong&gt; in the top right.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb05xyrggufb39t0hkpoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb05xyrggufb39t0hkpoc.png" alt="apillon-closed-beta-web3-hosting-deploy-to-staging" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, check what’s been deployed in the &lt;strong&gt;Preview&lt;/strong&gt; tab. Under &lt;strong&gt;Domain preview&lt;/strong&gt;, you can see your files’ IPFS-based domain — click on it and see your files hosted on IPFS.&lt;/p&gt;

&lt;p&gt;The details listed below tell about your website or app’s &lt;strong&gt;Environment&lt;/strong&gt;, &lt;strong&gt;Deployment status&lt;/strong&gt;, total &lt;strong&gt;Size&lt;/strong&gt;, and &lt;strong&gt;Update time&lt;/strong&gt;. If everything looks good, you can move it to the production phase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyc3jaxrqj8h8pe2yfiw0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyc3jaxrqj8h8pe2yfiw0.png" alt="apillon-closed-beta-web3-hosting-preview-deploy-to-production" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Deploy to production&lt;/strong&gt;. Once the deployment process is done, your website or app will be hosted on your custom domain to the world wide web on a decentralized network of nodes.&lt;/p&gt;

&lt;h3&gt;
  
  
  File editing
&lt;/h3&gt;

&lt;p&gt;During Apillon Closed Beta, the Web3 Hosting service does not support single file changes since hosting is treated as batch file upload. This means that as your deploy a new version of your website or app, its contents are rewritten, and new files get pinned and replicated on Crust Network.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; This limitation will be improved or removed in future dashboard updates. If you need a larger storage capacity to host your website or app, feel free to get in touch on &lt;a href="https://discord.com/invite/yX3gTw36C4" rel="noopener noreferrer"&gt;Apillon Discord&lt;/a&gt;, and we will grant you extra space or more storage buckets.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  File deletion
&lt;/h3&gt;

&lt;p&gt;Storage lease for every file on IPFS that passes through Crust’s pinning and replication service is paid upfront for a minimum of 6 months, which is out of Apillon’s control. This means that all files that you upload to Apillon Web3 storage buckets will remain accessible for that long.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File marked for deletion&lt;/strong&gt;&lt;br&gt;
If you decide to delete a file before the expiration of the 6-month storage lease on Crust, the file is marked for deletion. Doing that, the storage lease will not be extended, and once the storage lease is up, your file will be deleted from all IPFS instances, and the storage load of deleted files in your storage bucked will be emptied, so you can upload new files and redeploy your website or app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3-month deletion period&lt;/strong&gt;&lt;br&gt;
Web3 Storage lease period by Crust lasts 6 months. However, to deliver a better experience to our users, Apillon artificially lowers the deletion period to 3 months. This way, you can continue uploading new files faster and update your Web3 website/app contents more frequently.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note&lt;/strong&gt;: These limitations only come with the Apillon Closed Beta, which is intended for testing. Once the Beta period is up, Apillon Web3 services will have limitations adjusted to more realistic production requirements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Website/app redeployment
&lt;/h3&gt;

&lt;p&gt;In case you want to redeploy the website or app with new changes to files or folders, repeat the process above simply by uploading the whole website or app via Apillon Hosting view.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note:&lt;/strong&gt; Repeat deployment to Apillon Hosting will continue spending the Hosting storage capacity. However, every 3 months, the Hosting storage capacity will be expanded again after deleting older versions (as described above).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Share your feedback
&lt;/h2&gt;

&lt;p&gt;Now that you know how to navigate Apillon Closed Beta and its Web3 Hosting service, feel free to play around with it and see how it works for you.&lt;/p&gt;

&lt;p&gt;We’re eager to hear your feedback and suggestions on what could be improved and what type of features would serve you better as you build Web3 products.&lt;/p&gt;

&lt;p&gt;Share your thoughts in &lt;a href="https://discord.com/invite/yX3gTw36C4" rel="noopener noreferrer"&gt;Apillon Discord&lt;/a&gt;’s closed-beta channel, and help us improve the platform for greater adoption in the developer community.&lt;/p&gt;

&lt;p&gt;See you there!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://app.apillon.io/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl3wkt8qff3tjrvgxqt4.png" alt="apillon-join-closed-beta" width="228" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wiki.apillon.io/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10uutx13m3yhhpvxdbgq.png" alt="apillon-read-wiki" width="237" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://blog.apillon.io/apillon-platform-closed-beta-walk-through-web3-hosting-78cc23dee9e5" rel="noopener noreferrer"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>cryptocurrency</category>
      <category>airdrop</category>
      <category>web3</category>
    </item>
    <item>
      <title>Apillon Platform Closed Beta walk-through - Web3 Storage</title>
      <dc:creator>Lenka</dc:creator>
      <pubDate>Fri, 27 Jan 2023 11:00:05 +0000</pubDate>
      <link>https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b</link>
      <guid>https://dev.to/apillon/apillon-platform-closed-beta-walk-through-web3-storage-555b</guid>
      <description>&lt;p&gt;&lt;em&gt;The Apillon Platform Closed Beta is live and inviting participants to share feedback. Learn more about the Web3 Storage service, test, suggest, and help us improve.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Apillon Closed Beta gives you an opportunity to try and test the platform's Web3 services while still in the development phase. As we strive to deliver only the best features to the developer community, we invite registered users to share feedback and suggestions on what could be done better or differently. Every opinion counts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Read more 👉 &lt;a href="https://blog.apillon.io/apillon-launches-an-invitation-only-closed-beta-of-the-web3-development-platform-a075c38273a3"&gt;Apillon launches an invitation-only Closed Beta of the Web3 development platform&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this walk-through post, we take you from registration to advantage of Web3 Storage, one of the services available in Apillon Closed Beta.&lt;/p&gt;

&lt;p&gt;But first, there are some things you should keep in mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good to know
&lt;/h2&gt;

&lt;p&gt;In its current state, Apillon is a Web3 hybrid platform, and certain services are still being run by centralized providers to ensure fast development and optimal UI. However, the platform's back end is designed to gradually progress towards a fully Web3 infrastructure, and newer versions will deliver more decentralized services.&lt;/p&gt;

&lt;p&gt;You should also understand that Apillon Closed Beta delivers no guarantees, either regarding functionalities or access, as it is intended for testing purposes only. Beta features are also limited in some aspects and will become more accessible as the platform evolves.&lt;/p&gt;

&lt;p&gt;Now, let's begin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Account log in and access code
&lt;/h2&gt;

&lt;p&gt;To participate in the Apillon Closed Beta and test its features, go to &lt;a href="http://app.apillon.io/"&gt;http://app.apillon.io/&lt;/a&gt; and create an account. If you already have one, simply log in.&lt;/p&gt;

&lt;p&gt;At the bottom of the intro page, you will find a &lt;strong&gt;Closed Beta code&lt;/strong&gt; you need to access Closed Beta functionalities. Copy and paste it to our closed-beta channel on &lt;a href="https://discord.com/invite/yX3gTw36C4"&gt;Apillon Discord&lt;/a&gt;. Soon after, you should receive an email invitation to Closed Beta with access to Apillon Web3 services.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ &lt;strong&gt;Note&lt;/strong&gt;: We will be rolling out invites gradually, so it might take a day or two before you receive your invite.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X0IDWn98--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sn5p7rlqdbjf9wcp3qf8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X0IDWn98--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sn5p7rlqdbjf9wcp3qf8.png" alt="apillon-closed-beta-web3-storage-closed-beta-code" width="880" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your access is granted, you can proceed to starting your first Web3 project with Apillon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Web3 project
&lt;/h2&gt;

&lt;p&gt;In the top left corner of the screen, click &lt;strong&gt;Add new project&lt;/strong&gt;, set your project name and description in the pop-up window, and click &lt;strong&gt;Create new project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LMHQwTCl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nu4rafnv2za7fc2v4etr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LMHQwTCl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nu4rafnv2za7fc2v4etr.png" alt="apillon-closed-beta-web3-storage-create-web3-project" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once created, you can check more details under &lt;strong&gt;Project overview&lt;/strong&gt; in the menu on the left.&lt;/p&gt;

&lt;p&gt;Now, it's time to try and test Web3 services.&lt;/p&gt;

&lt;p&gt;In the Closed Beta, you can attach Web3 Storage and Web3 Hosting service. Let's dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 Storage
&lt;/h2&gt;

&lt;p&gt;Apillon Web3 Storage is a Web3-based storage service that allows you to increase the accessibility of your files (or that of your website or app) as they are stored on a decentralized network of nodes around the globe.&lt;/p&gt;

&lt;h3&gt;
  
  
  Underlying technologies
&lt;/h3&gt;

&lt;p&gt;Apillon Web3 Storage implements AWS S3 as cache to optimize upload of large files, &lt;a href="https://ipfs.tech/"&gt;IPFS&lt;/a&gt;, and &lt;a href="https://crust.network/"&gt;Crust Network&lt;/a&gt; to pin files on multiple IPFS nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IPFS&lt;/strong&gt;&lt;br&gt;
When you upload a file to &lt;a href="https://ipfs.tech/"&gt;IPFS&lt;/a&gt;, it gets split into smaller chunks and cryptographically hashed. It also receives a unique fingerprint called a content identifier (CID), which acts as a permanent record of your file as it is at that point in time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crust Network&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://crust.network/"&gt;Crust Network&lt;/a&gt; is a decentralized cloud storage provider on Polkadot. It supports multiple storage-layer protocols such as IPFS, and delivers instantly accessible on-chain storage functions. Crustʼs technical stack also supports data manipulating and computing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage bucket&lt;/strong&gt;&lt;br&gt;
For more dynamic use of decentralized storage and Web3 development, Apillon introduces the concept of storage buckets. To start using Web3 Storage, you should first create a new bucket.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 file storage process
&lt;/h2&gt;

&lt;p&gt;Now, with theory out of the way, it's time to get hands dirty.&lt;/p&gt;

&lt;p&gt;Here is what happens to your files when you store them decentrally with Apillon:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Files land on a reputable centralized cloud provider to ensure fast file capture.&lt;/li&gt;
&lt;li&gt;Once received, they proceed to the decentralized Apillon IPFS gateway, where Crust starts pinning and replicating them.&lt;/li&gt;
&lt;li&gt;Once the files become accessible on IPFS, Crust spreads them through multiple IPFS nodes globally, ensuring their decentralized accessibility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Create a storage bucket&lt;/strong&gt;&lt;br&gt;
To begin, you should first create a storage bucket. Navigate to the menu on the left, and under Services, click Storage, and then New bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dH5vvAvG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lidaz6guadrs4kzqetad.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dH5vvAvG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lidaz6guadrs4kzqetad.png" alt="apillon-closed-beta-web3-storage-new-bucket" width="880" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the pop-up window, set the name and description for the bucket. In Closed Beta, only buckets of 5GB storage space are available. Click &lt;strong&gt;Create bucket &amp;amp; continue to management&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XJARf_T1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7vgoz2ugs7zzfc8tqnf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XJARf_T1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7vgoz2ugs7zzfc8tqnf7.png" alt="apillon-closed-beta-web3-storage-create-new-bucket" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your storage bucket is ready, it allows you to store files from either the Apillon dashboard or the API endpoints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload files&lt;/strong&gt;&lt;br&gt;
Now, you can add files and folders with a simple click or drag and drop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BdpbIcqG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wi0txl4dger6gn51v894.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BdpbIcqG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wi0txl4dger6gn51v894.png" alt="apillon-closed-beta-web3-storage-upload-files" width="880" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose your file, confirm its upload in the pop-up, and click Refresh to update the file list below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f0wNsAhF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vuqon1r68o9j5hrkxv0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f0wNsAhF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vuqon1r68o9j5hrkxv0z.png" alt="apillon-closed-beta-web3-storage-upload-files-refresh" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the file list, you can see details, such as &lt;strong&gt;File CID&lt;/strong&gt;, &lt;strong&gt;Download link&lt;/strong&gt;, &lt;strong&gt;File size&lt;/strong&gt;, and &lt;strong&gt;Content type&lt;/strong&gt;. Under Actions, you can also mark your files for deletion to free up your storage bucket space (see more below).&lt;/p&gt;

&lt;p&gt;Once your file is uploaded successfully and appears on the list, you can copy its IPFS-based URL and paste it into a new browser tab. Your file should appear under that URL, meaning it's now successfully stored on a decentralized IPFS network of nodes via Crust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload folders&lt;/strong&gt;&lt;br&gt;
You can also use Web3 storage to upload a folder, for example, containing your website files. The IPFS-based link that you find on the Apillon storage bucket list should lead to your decentrally stored website files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VOGZBHoD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ti48d2dgk85z9b74wbpc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VOGZBHoD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ti48d2dgk85z9b74wbpc.png" alt="apillon-closed-beta-web3-storage-upload-folders" width="880" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create directory&lt;/strong&gt;&lt;br&gt;
For faster management and easier navigation, you can also create file directories. Click &lt;strong&gt;Create directory&lt;/strong&gt; on the right of the dashboard, set its name and description, and organize your files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q8sEG0PT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ohpxcnak5c63wz5sju9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q8sEG0PT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ohpxcnak5c63wz5sju9.png" alt="apillon-closed-beta-web3-storage-create-directory" width="880" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  File deletion
&lt;/h2&gt;

&lt;p&gt;To better understand file deletion with Apillon Web3 Storage, you should be aware that the storage lease for every file on IPFS that passes through Crust's pinning and replication service is paid upfront for a minimum of 6 months, which is out of Apillon's control. This means that all files that you upload to Apillon Web3 storage buckets will remain accessible for that long.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File marked for deletion&lt;/strong&gt;&lt;br&gt;
If you decide to delete a file before the expiration of the 6-month storage lease on Crust, the file is marked for deletion. Doing that, the storage lease will not be extended, and once the storage lease is up, your file will be deleted from all IPFS instances, and the storage load of deleted files in your storage bucked will be emptied, so you can upload new files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3-month deletion period&lt;/strong&gt;&lt;br&gt;
Web3 Storage lease period by Crust lasts 6 months. However, to deliver a better experience to our users, Apillon artificially lowers the deletion period to 3 months. This way, you can continue uploading new files faster and update your Web3 storage contents more frequently.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;☝️ Note: These limitations only come with the Apillon Closed Beta, which is intended for testing. Once the Beta period is up, Apillon Web3 services will have limitations adjusted to more realistic production requirements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Share your feedback
&lt;/h2&gt;

&lt;p&gt;Now that you understand how to navigate Apillon Closed Beta and its Web3 Storage, feel free to test it in all kinds of scenarios.&lt;/p&gt;

&lt;p&gt;We're looking forward to hearing about your experience with the Apillon platform and what features would you need most in your work.&lt;/p&gt;

&lt;p&gt;Join us in &lt;a href="https://discord.com/invite/yX3gTw36C4"&gt;Apillon Discord&lt;/a&gt;, and in the closed-beta channel, share your thoughts and feedback, so we can improve the platform and accelerate Web3 adoption for all developers regardless of background.&lt;/p&gt;

&lt;p&gt;We'll see you on the other side!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wiki.apillon.io/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l1Sbwj7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pkxqcy2623w7mb6af0ez.png" alt="apillon-join-closed-beta" width="237" height="56"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://app.apillon.io/login"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8YhPhUoY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b8htqe4j9zv9k7bdutph.png" alt="apillon-read-wiki" width="228" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://medium.com/@apillon/apillon-platform-closed-beta-walk-through-web3-storage-1e76bfaa928a"&gt;Apillon Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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