<?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: meetashwin</title>
    <description>The latest articles on DEV Community by meetashwin (@meetashwin).</description>
    <link>https://dev.to/meetashwin</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%2F917073%2Fe2dec201-cf20-429c-8767-6dff80eaf807.jpeg</url>
      <title>DEV Community: meetashwin</title>
      <link>https://dev.to/meetashwin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meetashwin"/>
    <language>en</language>
    <item>
      <title>Step #2 : TravelNest - System Design Diagrams</title>
      <dc:creator>meetashwin</dc:creator>
      <pubDate>Thu, 24 Aug 2023 10:08:45 +0000</pubDate>
      <link>https://dev.to/meetashwin/step-2-travelnest-system-design-diagrams-3k2p</link>
      <guid>https://dev.to/meetashwin/step-2-travelnest-system-design-diagrams-3k2p</guid>
      <description>&lt;p&gt;Now that we have defined product requirements for MVP, the next step is to have some diagrams that describe the system to be build.&lt;/p&gt;

&lt;p&gt;For this purpose, we will use &lt;a href="https://c4model.com/"&gt;C4 models&lt;/a&gt; which is an efficient way to iteratively define the system with increasing level of details.  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tools used in this step:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://c4model.com/"&gt;C4 models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://c4model.com/"&gt;Excalidraw&lt;/a&gt; web diagramming tool&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  TravelNest Context Diagram
&lt;/h2&gt;

&lt;p&gt;This first diagram is a zoomed out view of the system to be built.  It places the system at center and describe various stakeholders and other system interactions.&lt;/p&gt;

&lt;p&gt;It is created for a wider group of audience who are both technical and non-technical.&lt;/p&gt;

&lt;p&gt;Here's a representation of context diagram for TravelNest Platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K_A-i22E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cr7wkf8n9knew140p9vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K_A-i22E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cr7wkf8n9knew140p9vz.png" alt="TravelNest System Context Diagram" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we have the big picture defined, let's zoom into the central box and define some of its components.&lt;/p&gt;

&lt;h2&gt;
  
  
  TravelNest Container Diagram
&lt;/h2&gt;

&lt;p&gt;Now we zoom in to the context diagram to describe next level of details via container diagram.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TravelNest System is broken down into major containers - Web application, API application, User Management and Database&lt;/li&gt;
&lt;li&gt;For each container, certain level of implementation details are provided.  For e.g., Web application is developed using ReactJS&lt;/li&gt;
&lt;li&gt;Arrows between containers describe how they work with each other&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Level of details in this diagram depends on individual teams.  Some teams may choose to go into finer levels while others prefer to keep it at high level to start with.&lt;/p&gt;

&lt;p&gt;Here's how the container diagram for TravelNest looks like...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hhPNU5IP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2agh1pesy5f6lxpavp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hhPNU5IP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2agh1pesy5f6lxpavp2.png" alt="TravelNest Container Diagram" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TravelNest Component Diagram
&lt;/h2&gt;

&lt;p&gt;The third 'C' in the C4 diagram stands for Components.  &lt;/p&gt;

&lt;p&gt;The Component diagram shows how a container is made up of a number of "components", what each of those components are, their responsibilities and the technology/implementation details.&lt;/p&gt;

&lt;p&gt;As we will be building the application using cloud-native AWS services, we will skip this diagram and cover it in the next post that describes the solution architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;As a next step, let's make some system design decisions and define the solution architecture using AWS components.  See you all soon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Posts in this series:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/creating-an-airbnb-clone-travelnest-3bja"&gt;Step #0 : Creating TravelNest - an AirBnB functional clone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/step-1-travelnest-product-requirements-for-mvp-b0b"&gt;Step #1 : TravelNest - Define Product requirements for MVP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/step-2-travelnest-system-design-diagrams-3k2p"&gt;Step #2 : TravelNest - System Design Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>systemdesign</category>
      <category>webdev</category>
      <category>product</category>
    </item>
    <item>
      <title>Step #1 : TravelNest - Define Product requirements for MVP</title>
      <dc:creator>meetashwin</dc:creator>
      <pubDate>Mon, 21 Aug 2023 04:01:07 +0000</pubDate>
      <link>https://dev.to/meetashwin/step-1-travelnest-product-requirements-for-mvp-b0b</link>
      <guid>https://dev.to/meetashwin/step-1-travelnest-product-requirements-for-mvp-b0b</guid>
      <description>&lt;p&gt;Welcome back!  This is the second post in &lt;a href="https://dev.to/meetashwin/creating-an-airbnb-clone-travelnest-3bja"&gt;"Creating TravelNest - an AirBnB Functional Clone" series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I am starting with a simple product requirements document that describes the core features of TravelNest.&lt;/p&gt;

&lt;p&gt;I am using the following tools at this stage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://www.atlassian.com/agile/product-management/requirements"&gt;simple product requirements template&lt;/a&gt; from Atlassian&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Goals
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;We aim to create a software application that lets travelers book places offered by home owners across the world&lt;/li&gt;
&lt;li&gt;This will be initially created as a responsive web application, that is accessed via desktop and mobile browsers&lt;/li&gt;
&lt;li&gt;Property owners can register themselves and list properties for rentals (including location, images, description, rates etc.)&lt;/li&gt;
&lt;li&gt;Travelers can browse through properties and choose one that meets their criteria&lt;/li&gt;
&lt;li&gt;Once chosen, travelers can make a booking which must be accepted by the respective property owner&lt;/li&gt;
&lt;li&gt;Once accepted, the property is unavailable for booking by any other traveler on same dates&lt;/li&gt;
&lt;li&gt;Travelers and property owners can exchange private messages related to property, until a week after the last date of stay&lt;/li&gt;
&lt;li&gt;Payments are settled outside the platform (for initial release)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Assumptions
&lt;/h2&gt;

&lt;p&gt;Here are some basic assumptions to help with the system design.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number of unique users =&amp;gt; &lt;em&gt;&amp;lt; 10000 unique users per day&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Number of active property owners =&amp;gt; &lt;em&gt;&amp;lt; 250 MAU&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Number of active travelers =&amp;gt; &lt;em&gt;&amp;lt; 2500 MAU&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Max. number of properties by a single owner =&amp;gt; &lt;em&gt;5 properties&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Max. number of current bookings by a single traveller =&amp;gt; &lt;em&gt;3 bookings&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Further technical assumptions will be covered in system design.&lt;/p&gt;

&lt;h2&gt;
  
  
  User personas
&lt;/h2&gt;

&lt;p&gt;Following are key user personas for TravelNest application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Property owner&lt;/strong&gt; : Who owns properties and list them for rental using the platform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traveler&lt;/strong&gt; : Who searches for and books properties for stay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Site Admin&lt;/strong&gt; : Who manages the platform and have elevated access to prevent malicious usage of platform (e.g., fake properties, fake bookings etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core user stories
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--frth6sAd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8lkssvdci6vi3nbrn8fk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--frth6sAd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8lkssvdci6vi3nbrn8fk.png" alt="TravelNest User Stories" width="701" height="608"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yLlB9e6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drqoswagrezv7zx3pgub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yLlB9e6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drqoswagrezv7zx3pgub.png" alt="TravelNest User Stories" width="694" height="176"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iSRn0gQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j9ygdl676xyfnw5c4bvj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iSRn0gQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j9ygdl676xyfnw5c4bvj.png" alt="TravelNest User Stories" width="721" height="651"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fkQOGEzn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgrf28lfq8hepatftcs4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fkQOGEzn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgrf28lfq8hepatftcs4.png" alt="TravelNest User Stories" width="706" height="461"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NOU9odKl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wenwth8x48w5g6vztbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NOU9odKl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wenwth8x48w5g6vztbl.png" alt="TravelNest User Stories" width="713" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What we are not doing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mobile application is out of scope for MVP&lt;/li&gt;
&lt;li&gt;No variable price for properties.  Price per night is fixed for a property on all dates&lt;/li&gt;
&lt;li&gt;Date change on existing booking is out of scope for MVP.  For dates changes, traveller must cancel old booking and create a new one&lt;/li&gt;
&lt;li&gt;Payment for booking are settled outside the platform between travelers and property owners&lt;/li&gt;
&lt;li&gt;Videos are not available as part of property listing&lt;/li&gt;
&lt;li&gt;Website design is not part of development.  An opensource website template will be used&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Now that we have the product requirements in place, the next step is to get some &lt;a href="https://c4model.com/"&gt;C4 diagrams&lt;/a&gt; in place to describe the system to be built.  See you all soon!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Posts in this series:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/creating-an-airbnb-clone-travelnest-3bja"&gt;Step #0 : Creating TravelNest - an AirBnB functional clone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/step-1-travelnest-product-requirements-for-mvp-b0b"&gt;Step #1 : TravelNest - Define Product requirements for MVP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/step-2-travelnest-system-design-diagrams-3k2p"&gt;Step #2 : TravelNest - System Design Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>product</category>
    </item>
    <item>
      <title>Step #0 : Creating TravelNest - an AirBnB functional clone</title>
      <dc:creator>meetashwin</dc:creator>
      <pubDate>Mon, 21 Aug 2023 02:38:20 +0000</pubDate>
      <link>https://dev.to/meetashwin/creating-an-airbnb-clone-travelnest-3bja</link>
      <guid>https://dev.to/meetashwin/creating-an-airbnb-clone-travelnest-3bja</guid>
      <description>&lt;p&gt;Though I get hands-on quite often, given my tech leadership role - I had this nagging feeling that it has been a while since I created something from scratch.&lt;/p&gt;

&lt;p&gt;I want to design and build an end-to-end web application that serves a meaningful business case.&lt;/p&gt;

&lt;p&gt;I have chosen to create an AirBnB clone (functionally not technically) and call it &lt;strong&gt;&lt;em&gt;TravelNest&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a software application that connects home owners across the world with travelers visiting their places.  Using this application home owners can list properties which travelers can book and stay to have memorable experiences.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Through a series of blog posts, I plan to document my ideation, design and development journey with the dev.to community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I plan to take away from this journey?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take a real world use case, ideate and create a product vision&lt;/li&gt;
&lt;li&gt;Architect and design a scalable, cloud native solution&lt;/li&gt;
&lt;li&gt;Develop high quality code&lt;/li&gt;
&lt;li&gt;Test and deploy using best engineering principles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I plan to give back to the community?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document my learnings through blog posts&lt;/li&gt;
&lt;li&gt;Opensource codebase for use&lt;/li&gt;
&lt;li&gt;A guidance to those starting to build things from scratch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will see you all soon with the first step - &lt;em&gt;Creating the product backlog for TravelNest&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Posts in this series:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/creating-an-airbnb-clone-travelnest-3bja"&gt;Step #0 : Creating TravelNest - an AirBnB functional clone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/step-1-travelnest-product-requirements-for-mvp-b0b"&gt;Step #1 : TravelNest - Define Product requirements for MVP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/meetashwin/step-2-travelnest-system-design-diagrams-3k2p"&gt;Step #2 : TravelNest - System Design Diagrams&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>programming</category>
      <category>saas</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Create your first Application Load Balancer (ALB) : #LearnAWS</title>
      <dc:creator>meetashwin</dc:creator>
      <pubDate>Tue, 13 Sep 2022 02:28:15 +0000</pubDate>
      <link>https://dev.to/meetashwin/create-your-first-application-load-balancer-alb-learnaws-2f4n</link>
      <guid>https://dev.to/meetashwin/create-your-first-application-load-balancer-alb-learnaws-2f4n</guid>
      <description>&lt;p&gt;In this post, you’ll learn the key steps to create your first Application Load Balancer (ALB) in AWS.&lt;/p&gt;

&lt;p&gt;ALB is used to distribute the incoming traffic across multiple targets like EC2 instances — thereby providing single entry point to your applications. It works on Layer 7 (application layer) and provide additional functions like routing, health checks etc. You can read more about ALB in the &lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html"&gt;official AWS documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are the key steps to create your first ALB.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jks27Jto--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/li2lzv0wlwxgkkaiyw4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jks27Jto--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/li2lzv0wlwxgkkaiyw4v.png" alt="Creating ALB in AWS" width="798" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do note that Target group and ALB configuration involve a few steps that are essential to make it work. Purpose of this post is to give a blueprint to make this happen, I will link to relevant content on the web that are more detailed.&lt;/p&gt;

&lt;p&gt;Here are &lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancer-getting-started.html"&gt;step-by-step instructions&lt;/a&gt; from AWS to create your ALB.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is part of my post series, where you get concise and focused information to perform various operations in AWS. The posts give you a blueprint of activities to perform and link to deep-dive resources as required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;This post was originally published in &lt;a href="https://meetashwin.net/create-your-first-application-load-balancer-alb-learnaws-51416a0195e9"&gt;Meet Ashwin blog&lt;/a&gt;, on 13 Sep 2022.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Create your first NFT with Smart Contract</title>
      <dc:creator>meetashwin</dc:creator>
      <pubDate>Mon, 29 Aug 2022 02:47:18 +0000</pubDate>
      <link>https://dev.to/meetashwin/create-your-first-nft-with-smart-contract-2glb</link>
      <guid>https://dev.to/meetashwin/create-your-first-nft-with-smart-contract-2glb</guid>
      <description>&lt;p&gt;In recent times, I spend most of my personal coding time with Smart Contracts. One useful resource on the internet is &lt;a href="https://www.web3.university/tracks/road-to-web3"&gt;Road to Web3&lt;/a&gt; course from folks at &lt;a href="https://www.alchemy.com/"&gt;Alchemy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can follow their tutorial here to create your first smart contract and mint an NFT with it.&lt;/p&gt;

&lt;p&gt;I am outlining the steps in this post — I suggest you to use this as a guide to using the tutorial from &lt;a href="https://www.web3.university/tracks/road-to-web3"&gt;Web3 University&lt;/a&gt;.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Setup your &lt;a href="https://metamask.io/"&gt;MetaMask wallet&lt;/a&gt; and ensure a test account is setup (the tutorial uses Rinkeby network)&lt;/li&gt;
&lt;li&gt;Add some ETH to your Rinkeby test account using &lt;a href="https://rinkebyfaucet.com/"&gt;Rinkeby Faucet&lt;/a&gt;. This will give us enough gas to deploy smart contract to Ethereum network and mint it&lt;/li&gt;
&lt;li&gt;Create an account in OpenSea Testnet using the MetaMask wallet (Rinkeby account). This is where the NFT will be deployed&lt;/li&gt;
&lt;li&gt;Create a &lt;a href="https://console.filebase.com/"&gt;Filebase account&lt;/a&gt; which will host your NFT (an image for example) using &lt;a href="https://en.wikipedia.org/wiki/InterPlanetary_File_System"&gt;IPFS&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Steps to mint your first NFT
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create your first ERC721 (NFT standard) smart contract in Solidity using &lt;a href="https://docs.openzeppelin.com/contracts/4.x/wizard"&gt;OpenZeppelin wizard&lt;/a&gt;. Keep the default code, it is good enough for the test deployment&lt;/li&gt;
&lt;li&gt;Open the smart contract in &lt;a href="https://remix.ethereum.org/#optimize=false&amp;amp;runs=200&amp;amp;evmVersion=null&amp;amp;version=soljson-v0.8.7+commit.e28d00a7.js"&gt;Remix&lt;/a&gt; and understand what each section of the code does (tutorial from Web3 University guys help with it)&lt;/li&gt;
&lt;li&gt;Compile the smart contract and ensure there are no errors&lt;/li&gt;
&lt;li&gt;Deploy the smart contract using the Rinkeby test account you setup earlier in MetaMask wallet. Some ETH will be used as gas for this deployment&lt;/li&gt;
&lt;li&gt;Once the deployment of smart contract to Ethereum network is successful, focus on uploading the NFT digital asset to your Filebase bucket&lt;/li&gt;
&lt;li&gt;Go to &lt;a href="https://console.filebase.com/"&gt;Filebase console&lt;/a&gt;, create a bucket and upload the NFT + metadata.json to it (again use the tutorial to understand how to create the &lt;em&gt;metadata.json&lt;/em&gt; file)&lt;/li&gt;
&lt;li&gt;Copy the IPFS CID for metadata.json file. We will use this to mint the NFT from the smart contract&lt;/li&gt;
&lt;li&gt;Go back to Remix and mint the NFT using the safeMint() method, which takes in 2 arguments — &lt;em&gt;IPFS CID (from Filebase) and Account ID (from MetaMask wallet)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Again, the minting process will use a small amount of gas. Ensure your see a success message in Remix console&lt;/li&gt;
&lt;li&gt;Go to &lt;a href="https://testnets.opensea.io/"&gt;OpenSea Testnet&lt;/a&gt; and login with your &lt;em&gt;MetaMask wallet&lt;/em&gt;, using your Rinkeby test account&lt;/li&gt;
&lt;li&gt;If all went well, you should see the NFT hosted in OpenSea, with all the metadata setup using metadata.json&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Congratulations on minting your first NFT using smart contract!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published by me at &lt;a href="https://meetashwin.net/create-your-first-nft-with-smart-contract-275e4f8c8181"&gt;Meet Ashwin&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here’s the &lt;a href="https://testnets.opensea.io/assets/rinkeby/0x74310472c6961028ff2bf64a8e9a99f8274e4dde/0"&gt;link to my NFT&lt;/a&gt; — this is an art work by my daughter!&lt;/p&gt;
&lt;/blockquote&gt;

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