Thriftysoft https://www.thriftysoft.tech We build Attractive, scalable, and secure mobile and web applications|| Building Web3 Products Thu, 09 Jun 2022 12:43:12 +0000 en-US hourly 1 https://wordpress.org/?v=5.8.8 https://www.thriftysoft.tech/wp-content/uploads/2022/06/cropped-logo_favicon-32x32.png Thriftysoft https://www.thriftysoft.tech 32 32 Understanding the Architecture behind NFT Marketplace https://www.thriftysoft.tech/understanding-the-architecture-behind-nft-marketplace/?utm_source=rss&utm_medium=rss&utm_campaign=understanding-the-architecture-behind-nft-marketplace https://www.thriftysoft.tech/understanding-the-architecture-behind-nft-marketplace/#respond Thu, 09 Jun 2022 12:38:02 +0000 https://www.thriftysoft.tech/?p=5708 This is Mayank, from Thrifty software, again with a new post about the Most hyped product these days, i,e NFT Marketplace. people are crazy about the NFT Marketplace and they want to launch their own for different use cases and themes like Real […]

The post Understanding the Architecture behind NFT Marketplace first appeared on Thriftysoft.

]]>
This is Mayank, from Thrifty software, again with a new post about the Most hyped product these days, i,e NFT Marketplace. people are crazy about the NFT Marketplace and they want to launch their own for different use cases and themes like Real estate, Art galleries, Gaming, etc.

But When it came to development, it is essential that they know about the Actual design & Architecture behind this Marketplace before they start development. Again like my previous post on developing Custodial Wallet, I won’t be teaching how to develop an NFT marketplace but will be discussing some concepts & Flow behind it.

What is a Non-Fungible Token (NFT)?

NFT stands for non-fungible token. An NFT transforms a digital file ( Image, Audio, gif, Video, PDF) into a digital asset. An NFT token is created and stored on a blockchain, serving as proof of ownership and provenance of a specific item. It works like a digital certificate of authenticity that can be easily verified by anyone anywhere in the world on a blockchain.

Question: Does NFT is only for Artworks (Images, Video, Gifts)?
Answer: Definitely! no NFT for Artworks is just one use case of NFT, but there can be several use cases, like NFT in ticketing, etc.

What is an NFT Marketplace?

NFT marketplace is a marketplace, which allows artists to showcase and list their Artwork in the form of digital tokens( NFT), and buyers/investors can purchase that Artwork. It is very similar to buying & selling products on an eCommerce marketplace like amazon. An Artist can choose various ways of selling their Artwork. They can choose to sell it for a Fixed price, or can put the Artwork in the Auction, open for bidding, where the highest bidder gets to own the NFT.

Different Types of NFT Marketplace

There are basically two types of NFT Marketplaces,

  1. Primary Marketplace: Primary NFT marketplace is the place, where a creator ( Artist) can mint an NFT token ( Create Artwork in the form of a digital token), and list them for sale.
  2. Secondary Marketplace: Secondary NFT marketplace is the place, where a collector, who has bought an NFT, can resell, or relist their NFTs.

While the “primary market” refers to the first sale of an artwork, the “secondary market” encompasses all subsequent resales of the work.

In this post, I will be focusing on building a Primary NFT Marketplace.

Understanding the Main Logic Behind the NFT Marketplace

Here are some functions & demonstrations, going through which you will get a complete Idea, of how an NFT marketplace works.

1. Authentication :
Authentication is required, to perform actions in the platform. Although browse functions( Browse NFTs, Browse User, Browse Collection) should be open ( unAuthenticated), but some features like Create Profile, Edit Profile, Like NFT, Create collection, and Delete Collection, need authentication to identify the user.

You can use normal Email / Password or Social Login based Authentication and generate a JWT token, or else if you don’t want to use this Authentication, you can also do using Web3 Wallets like Metamask, Coinbase, etc. Refer to the Article Here.

2. Profiling :
We show the user Profile in the Marketplace, associated with each NFT CardLeaderboardCollectionBidder List, and other places. So we need a maintain the Profile of the user which may include the user’s fullname, username, bio, cover image, avatar & other users’ public information. This information we can keep in our database

3. KYC ( Optional) :
This is Completely Optional. In case you need to build a controlled NFT Marketplace ( Depending on the Legal compliances of your Country), you need to know your customer ( user), for that purpose you need a KYC Module. KYC you can implement in two ways :

  1. Manual KYC: Either you create your Customer KYC Module, where you collect data from users and verify it from the Admin panel
  2. 3rd Party API: Or you can use any 3rd Party API like https://onfido.com/ which will do the collection & verification for you.

You can also restrict users from buying/selling in the Platform until the KYC is completed.

4. Create Asset ( Minting) :

NFT Marketplace Asset Minting Diagram
NFT Minting Diagram

Creating a Digital Asset / NFT Artwork on a Marketplace means minting your digital token. Where a user has to upload the Information about the NFT ( Artwork) and mint a new token.

Now, these Include three steps, that are :

  1. Connecting your DApp with a Web3 Wallet: Minting an NFT on a blockchain, requires you to first connect your Dapp with a web3 wallet like Metamask.
  2. Uploading Metadata to IPFS: You need to upload your NFT’s Metadata to IPFS ( InterPlanetary File System), metadata includes the NFT’s Assets ( Image, video, GIf), title, description, and Properties. Since we are building a nonfungible token, we need to make sure this metadata stays forever and is decentralized. Thus storing it in IPFS is the best option. If you upload these files in a centralized database, it is risky for the security of your file. After you upload your NFT’s Metadata to IPFS, you will get a metadata ID ( IPFS key)
  3. Mint your NFT
    Take the metadata ID from the IPFS, use it as tokenURI, and sign the transaction, to mint an NFT.

5. List the NFT on Sale :

NFT Marketplace   - Fixed Price and Auction Sale Diagram
Listing NFT for Fixed Price Sale / Auction

Once the user has Minted an NFT or purchased (owned) one, they can put the NFT for Sale,

Sale Can be of different Types:

  1. Fixed Price sale: Here user will list the NFT for a fixed price, so that other users can directly purchase the NFT, by paying the amount given in the NFT detail.
  2. Auction: Here user will list the NFT for Auction, where the user will specify the minimum Bid Amount and duration of the auction. So users can bid on the NFT. After the Auction is expire, no one will be able to place a bid. Now the Owner can decide to accept/reject the highest bid. In case the user has opted to Accept, The amount will go to the user, and the owner of the NFT will be transferred to the highest bidder.
  3. Hybrid ( Auction & Fixed Price): User can also List their NFTs, in the hybrid model, i.e List them both for Fixed price & Auction. So here the user has to Specify the minimum Bid Amount, duration of the auction, and buy now price. Now user can place bid on the auction, but if user buy the NFT with Buy now price, the NFT will be immediately sold to the buyer and the auction will be closed.

6. Bidding & Buying :

Users can visit the NFT detail page and can Buy or Bid on an NFT, depending on the form of Sale. ( Buy = Fixed Price or Hybrid, Bid = Auction). The Flow is Almost the same, like :

User Select an NFT → Connect Metamask → Call Buytoken or BidToken function → Sign TX & Send to Blockchain → Event will be triggered which will change the owner in the DB

Any user ( owner) of the NFT, can decide to remove it from Sale ( Fixed Price / Auction). Once it is removed from Sale, no one can purchase it / place a bid

7. Collection & Add NFT to Collection
Collections are used to group the NFTs of similar traits, to make it easy for users to browse. An NFT marketplace should have a feature where users can create/update a collection and assign their NFTs ( they owned) to a collection. Collection can exist on the Database, in order to make it easy for the user to browse/search.

8. Other Views :
Although you have to keep the NFTs metadata in the IPFS, but its good to keep a copy in your Database as well, to improve the query & search functionality in the NFT marketplace. Users will find it convenient to browse the NFT Artwork by searching their title, by category, filter by collection, etc. These could be different views to list the NFTs,

  1. Trending NFTs
  2. Browse by Category
  3. Browse by Collection
  4. Browse User Profile
  5. Browse User Created / Owned NFT

Conclusion :

After going through the post, you must have got an idea about the Architecture behind an NFT Marketplace, and you must be excited to build your own NFT Marketplace.

You should Refer to Some tutorials & content, that must be useful for you :

  1. https://www.youtube.com/watch?v=GKJBEEXUha0
  2. https://dev.to/edge-and-node/building-scalable-full-stack-apps-on-ethereum-with-polygon-2cfb
  3. https://github.com/dabit3/polygon-ethereum-nextjs-marketplace/

In case you are looking for an NFT Marketplace, visit https://thriftysoft.tech/ or feel free to get in touch with us at admin@thriftysoft.tech or contact us on Skype. If you just need the UI, shown in the post, buy it here https://codecanyon.net/item/minto-reactjs-nft-marketplace-ui-kit/35888391

We will be happy to help you 😊

The post Understanding the Architecture behind NFT Marketplace first appeared on Thriftysoft.

]]>
https://www.thriftysoft.tech/understanding-the-architecture-behind-nft-marketplace/feed/ 0
How you can build a Scalable & Affordable MVP for your startup? https://www.thriftysoft.tech/how-to-build-a-scalable-affordable-mvp-for-your-startup/?utm_source=rss&utm_medium=rss&utm_campaign=how-to-build-a-scalable-affordable-mvp-for-your-startup Sun, 24 Apr 2022 06:24:08 +0000 https://www.thriftysoft.tech/?p=5657 Hello! I’m Mayank, and I’m the founder of Thrifty Software Private Limited. we are a Prototype Factory where we assist early-stage startups in developing scalable, cheap, and trustworthy MVP ( like Mobile applications, Web applications, PWAs, etc) The most challenging barrier for early-stage startups, particularly with […]

The post How you can build a Scalable & Affordable MVP for your startup? first appeared on Thriftysoft.

]]>
Hello! I’m Mayank, and I’m the founder of Thrifty Software Private Limited. we are a Prototype Factory where we assist early-stage startups in developing scalable, cheap, and trustworthy MVP ( like Mobile applications, Web applications, PWAs, etc)

The most challenging barrier for early-stage startups, particularly with non-technical founders, is the difficulty in developing the MVP out of their idea at an affordable price. With the help of this post, I will attempt to show how someone can create an affordable & scalable MVP. The solution is straightforward! Low-cost labor. If you want to reduce the cost of the product or service without changing the amount or quality of the material, you must reduce the labor expenses. It is the development Charge in software development.

But you could be worried that involving students in the development process would jeopardize the product’s quality and standard because they lack professional expertise. And in most cases, they actually wind up doing something strange, against the requirements, and it takes a long time. Even so, it is not scalable. However here I will try to show how you can increase the project’s success rate to 90 % even after involving Student Developers ( Intern) in the core development team. And that’s only possible, with the Help of some Software Engineering Framework!. Don’t be afraid, I bought the simplest way for you.

Disclaimer: The purpose of this post is to demonstrate how a startup can obtain the MVP at a low cost by utilizing interns. However, the purpose of this post is not to encourage you to exploit them. We should respect the minimum salary (stipend) that should be paid to them in order to cover their living expenses and other necessities.

1. Always have brief documentation of your requirements on hand. ( Writeup)

Write for MVP
Photo by Kaleidico on Unsplash

You don’t have to explain a story about the product to him (Intern)over the phone every day, which might lead to a number of misunderstandings. Instead, create a Requirement Documentation.

Requirements document − A document or write up containing detailed requirements for the system being developed. These requirements define the functional features and capabilities that a system must possess.

The document should be concisewithout jargonmodular, and provide information about each minor feature. Divide the Requirement in such a structure:

MVP Writeup Structure
Requirement Document Structure

You may use this as a template: Here

2. Create a wireframe ( Mockup ) for MVP

MVP Wireframe
Photo by Kelly Sikkema on Unsplash

Only you, as the author of the Idea, may imagine how your application should appear and function. Prepare a wireframe that will help any developer(Interns) to visualize what you are thinking. You can prepare wireframes using either pen-paper or an online application such as Figma(free) or Adobe XD(free) before hiring an intern. If you are not comfortable with these tools, you have other simpler options as well like Marvel(1 project free) or Draw.io(free)

Even a scribbled-on-paper diagram will suffice! read more about wireframing here

3. Setup Trello Board ( Not JIRA) for MVP

Trello Board
Trello Board

Trello and JIRA are from the same company, but I choose Trello Board for small startups and early users. It is basic and straightforward.

Mention all of your Requirements in the Trello board, based on the modules. Checklist may be used to separate the tasks in a module. This will allow you to monitor the project’s progress.

You can Clone a template from Here

4. Make a Git repository and set up Push on Mail.

Create a Gitlab repository, push a copyright notice inside it(This will keep your work Safe), and add your developer as a member in the repository, and request that the developer check-ins on a daily basis with the appropriate commit message. You may configure a push on mail service so that you will receive email notifications, whenever someone commits on the branch. Here is the process to configure

Copyright Notice, you can copy from here

copyright notice
copyright notice

Bonus : Always try to hire two Interns, and they both should review each other’s work. This is called Peer Review and it will definetly improve the quality of the project

5. Database Design & API Specifications

MVP database design
Database Design

This is something you may lack since you are not technically savvy. However, this is really important for the project’s quality. Ask your intern to create these documents before they begin development because it will be impossible for them to focus on this after they begin work.

These documents include but are not limited to,

  1. Database Diagram (ER Diagram): This applies to SQL databases. They can use any tool they choose. Personally, I like dbdocs.
    If they are working on NoSQL databases like firebase and MongoDB, ask them to populate the database manually, to visualize the complete system, before developing.
  2. API Definition: This is for API specifications. This is only required for projects involving API creation. They can utilize postman to create specifications before developing, other options are Swagger and google sheet.
    for postman, refer to this sample, and for swagger, the equivalent sample is given here. And for the Easiest one, Google sheet, clone this document.

6. Transparency

Your intern should communicate their progress on a daily basis. They may share the demo of the project, on a nearly daily basis. You should test and provide comments. Try to put your comments on the same Trello board, discussed in point (3), for the sake of maintaining records.

7. Daily Standup or Daily Status Call

I know you’re too preoccupied with your idea and team. However, attempt to obtain at least 15 minutes to have a status call with the intern to hunt down the done, pending, and roadblocks along the route. Discuss what they have done, what is pending and why, and whether or not there is a roadblock.

Interns will be similarly motivated as a result of this.

Clone this sample document: Standup Sheet Format

Conclusion

Previously! I was not a whiz at technology! So, over time, I was able to master these things on my own and build a development process with such kind of resources. I hope that if you take the same method as described above, you will be able to quickly obtain an affordable and scalable MVP.

Ways in which we can help you?

MVP Development
If you want to create a low-cost, scalable MVP, we can help you. We have a team of highly competent and qualified student partners, and we have successfully helped numerous startups that have acquired seed funding, based on their MVP.

Technical Documentation
If you do not want to work with us and instead operate your own in-house team or employ a freelancer, a collection of technical documents will undoubtedly assist you in describing your requirements. We offer a comprehensive set of documents, including a requirement document, wireframe, API specifications, and database design, for a very low cost.

feel free to get in touch with us at admin@thriftysoft.tech or contact us on Skype

The post How you can build a Scalable & Affordable MVP for your startup? first appeared on Thriftysoft.

]]>
How to Develop a Custodial Wallet for Cryptocurrencies?  https://www.thriftysoft.tech/how-to-develop-custodial-wallet-for-cryptocurrencies/?utm_source=rss&utm_medium=rss&utm_campaign=how-to-develop-custodial-wallet-for-cryptocurrencies Sat, 23 Apr 2022 08:27:39 +0000 https://www.thriftysoft.tech/?p=5646 With the increasing hype of blockchain, cryptocurrencies, NFT & metaverse, now startups are moving from web2 towards web3. Thus increasing demand for the Crypto wallet. Still, people are confused between custodial wallet & non-custodial wallets. In this post, I will […]

The post How to Develop a Custodial Wallet for Cryptocurrencies?  first appeared on Thriftysoft.

]]>
With the increasing hype of blockchain, cryptocurrencies, NFT & metaverse, now startups are moving from web2 towards web3. Thus increasing demand for the Crypto wallet. Still, people are confused between custodial wallet & non-custodial wallets.

In this post, I will not be talking about the difference between custodial & non-custodial wallet, if you want to know the difference, read it here

Here I will try to give you a design overview of a custodial wallet,  I will help you to see the architecture behind it, so that you can use this knowledge in building your own Custodial Wallet.

What is Custodial Wallet ?

A Custodial Wallet is defined as a wallet in which the private keys are held by a third party. This means the third party has full control over your funds while you only have to give permission to send or receive payments. 

Why you should choose a Custodial wallet? 

If you are building a mobile or web app, and you want the wallet functionality, so here are the following reason, why you should choose Custodial Wallet over non-custodial wallet.

  1. User Experience: Connecting to an external wallet like metamask, with an application is not straightforward all the time, and it affect the user experience. Also, it’s not easy to connect to an external wallet, with an app. So if you don’t want your user, to connect the app/website with any external wallet, and you still want to use crypto coins , you should use a custodial wallet.
  2. Less Educated Targetted Customer: Not everyone today has knowledge of web3, metamask, trust wallet, And other web3 wallets, so it creates a hindrance for them, to use your application. So if your app user is not that educated in the field of blockchain and crypto and you still want to use crypto technology in the app, then you should use Custodial wallet, where wallet will be connect with their account. ( JWT)
  3. Control: By using a Custodial wallet, the owners of the platform, have control over the usage/deposit & withdrawal. so  If you want to control your user’s wallet, you should use a Custodial wallet.

How to develop a Custodial Wallet?

Here is the overview, about developing a custodial wallet, which will ultimately require you to develop the following functionalities.

  1. Authentication –  there should be an Authentication module. Every user should have their email/password. They should have the ability to Login via email and password or using Social Methods like Google, Facebook, etc.

2. Creating wallet Addresses for each user – If the user Login for FIrst time, Create an address for the user, using the private key, which should be generated considering the security in the mind. You need to do this operation for each blockchain you are using. The syntax can be different for different blockchain

Onsignup trigger diagram of custodial wallet
Onsignup Trigger

3. KYC ( Know your Customer) – There should be a user’s KYC and it should be approved before the user start using the wallet. Although it is not required technically, but it is really necessary because of the legal compliances.

Either you can create your Custom KYC Module, where you collect data from users and Verify it from the Admin panel or use any 3rd Party API like https://onfido.com/, which will do the collection and verification for you.

4. Multifactor Authentication ( MFA) – there should be MFA enabled with the user account, to protect a few critical actions like sending money to any address, deleting an account, etc. it can be done using: 

  • Mobile number & OTP
  • Google Authenticator

5. Coin List – There should be an API to fetch all the supported & currently active coins, in the Platform. You have to create this list from the Admin panel.

6. Fund Balance – There should be an API, to fetch a list of coins, their quantity and the price, the user is holding. If you are using more than one blockchain, you need to query the data from more than one blockchain, concatenate the array and send it to the user. To calculate the price in FIAT currency, you can use any Crypto Exchange API like Coinbase.

Crypto Fund Balance Screen of custodial wallet
Crypto Fund Balance Screen

7. Get Deposit Address – If someone wants to deposit the cryptocurrency in your wallet, they will need a deposit Address or a QR code. So there should be an API, to fetch the user’s deposit address for a given network.

P.S:  Deposit Addresses will be different for different blockchain
Deposit Address of Custodial Wallet
Deposit Address

8. View Transactions – There should be an API to get the transaction of any account(address). You can also add a currency filter, to get a transaction for a specific cryptocurrency.

9. Send Crypto Currency – Now, it is time to create a transaction object, ( if the user wants to send the crypto coin). There should be an API, which will send the transaction. Transaction will be signed in the backend using the private key for user’s wallet.

Custodial Wallet Trasaction flow
Trasaction Flow

Conclusion : 

After going through the post, you must have got an idea about the what is custodial wallet, why & when you should use custodial wallet, and how to build a custodial wallet.

In case you are looking for a Custodial or noncustodial wallet, for your business use case, feel free to get in touch with us at admin@thriftysoft.tech or contact us on Skype

We will be happy to help you 😊

The post How to Develop a Custodial Wallet for Cryptocurrencies?  first appeared on Thriftysoft.

]]>