gotangible
README.md

๐Ÿƒ Tangible NFT eCommerce Marketplace ๐Ÿƒ

Tangible allows you to turn your favorite digital assets into high quality physical products.

How It Works

โšก Connect your wallet

View all of the assets owned by your wallet in one convenient location.

๐Ÿ–ผ๏ธ Choose your asset

Images are pulled from the NFT's metadata to save you the headache of uploading files.

๐Ÿ‘• Create your product

Choose from our library of premium physical products and the product is created and shipped to you.

Technology

๐Ÿ’ป Overview

Tangible is a NodeJS web application built with React and Next with the help of TailwindCSS for styling.

๐ŸŒ Web3

Moralis powers the Web3 elements of the app like wallet connections, message signing, etc. In a previous version of the build, Moralis also provided the functionality for getting the NFT balances and data for the connected wallet. This was quickly deprecated in favor of the OpenSea API due to OS's much more complete and accurate NFT metadata.

๐Ÿ’ฐ Payments

Payments are powered by the Stripe Checkout API with massive utility provided by the use-shopping-cart library. This module provides utilities for managing a persistant, stateful shopping cart with direct connections for checking out with Stripe. Because each product needed to be created on demand rather than in advance through the Stripe dashboard, custom cart functionality was needed as provided through use-shopping-cart.

TODO: ๐Ÿšš eCommerce

After an order is placed, the Prodigi print-on-demand API will be used for creating the physical product. They handle all the printing, packaging, and shipping associated with the physical product side of the order by sending a simple REST API call. From there, order and shipping statuses can be tracked through the API as well.

Roadmap

  • Create connection with the Prodigi API to send out order fulfillment requests on checkout success
  • Generate mockups for physical products with NFT artwork programatically
  • Add more product types
  • Provide a dashboard for checking order and shipping statuses for the connected wallet
  • Add support for other blockchains