Giter VIP home page Giter VIP logo

market's Introduction

Proton Marketplace

This application shows the basic functionality of NFTs on the Proton chain through the use of the Proton Web SDK.

This is built off of atomicassets NFT framework.

To build and run locally

Docker

Run a docker container:

docker build market

docker images

docker run -p 3000:3000 -i -d [image id]

npm

git clone https://github.com/ProtonProtocol/market.git

npm install

npm run dev

Set up a Cloud Firestore

This project uses Firebase for the dynamic configuration of homepage templates. Please refer to the Firebase documentation to set up your firestore.

Note you'll need to set the following environment variables:

  • FIREBASE_API_KEY
  • FIREBASE_AUTH_DOMAIN
  • FIREBASE_PROJECT_ID

If you do not want to implement Firebase, remove the invocation of useFirebaseFeaturedTemplates and fetch templates directly from Atomic Assets (for example, with the http://proton.api.atomicassets.io/atomicassets/docs/swagger/#/templates/get_v1_templates endpoint).

The API response will contain an array of templates which you can pass as the items prop of the Grid component rendered.

// pages/index.tsx

const MarketPlace = (): JSX.Element => {
  const featuredTemplates = useFirebaseFeaturedTemplates();
  return (
    <PageLayout>
      <Banner modalType={MODAL_TYPES.CLAIM} />
      <ExploreCard />
      <HomepageStatistics />
      <Title>New &amp; Noteworthy</Title>
      <Grid items={featuredTemplates} />
    </PageLayout>
  );
};

Environment

Create a copy of .env.template and name it .env.local:

  • NEXT_PUBLIC_CHAIN_ENDPOINTS is used for initializing the Proton Web SDK.
  • NEXT_PUBLIC_BLOCK_EXPLORER is used for connecting to the Proton Block Explorer.
  • NEXT_PUBLIC_NFT_ENDPOINT is used for connecting to the Atomic Assets API.
  • NEXT_PUBLIC_GA_TRACKING_ID is used for initializing Google Analytics.
  • FIREBASE_API_KEY, FIREBASE_AUTH_DOMAIN, and FIREBASE_PROJECT_ID are used for initializing Firebase for the homepage's featured NFTs.
  • PINATA_API_KEY and PINATA_SECRET are used for connecting to Pinata for IPFS upload.

For mainnet:

NEXT_PUBLIC_CHAIN_ENDPOINTS='https://proton.eoscafeblock.com, https://proton.greymass.com'
NEXT_PUBLIC_BLOCK_EXPLORER='https://proton.bloks.io/block/'
NEXT_PUBLIC_NFT_ENDPOINT='https://proton.api.atomicassets.io'
NEXT_PUBLIC_GA_TRACKING_ID='string'
FIREBASE_API_KEY=string
FIREBASE_AUTH_DOMAIN=string
FIREBASE_PROJECT_ID=string
PINATA_API_KEY=string
PINATA_SECRET=string

For testnet:

NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com'
NEXT_PUBLIC_BLOCK_EXPLORER='https://proton-test.bloks.io/block/'
NEXT_PUBLIC_NFT_ENDPOINT='https://test.proton.api.atomicassets.io'
NEXT_PUBLIC_GA_TRACKING_ID='string'
FIREBASE_API_KEY=string
FIREBASE_AUTH_DOMAIN=string
FIREBASE_PROJECT_ID=string
PINATA_API_KEY=string
PINATA_SECRET=string

Marketplace

The marketplace page consists of templates of a specific collection_name.

Custom flags

  • The Template object is extended with the following custom property: lowestPrice.
    • lowestPrice (string) is determined by checking the Sales API for assets listed for sale and finding the lowest price of the assets of that particular template.

My NFTs

The My NFTs page consists of the current user's assets. Each user is only allowed to view their own collection page in this demo.

Custom flags

  • The Asset object is extended with the following custom properties: isForSale and salePrice.
    • isForSale (boolean) is determined by checking the Sales API for currently listed sales using the asset_id and seller (current user's chainAccount)
    • salePrice (string) is determined by checking the Sales API and combining an asset's listing_price and listing_symbol

market's People

Contributors

cindyssun5 avatar daolavi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.