Best way to implement an Algorand NFT Marketplace

Hello everyone! This is my first post here.

TL;DR

Can someone please explain how to deliver an Algorand NFT Marketplace inside my client’s browser? What does the architecture set-up look like to go from back-end to browser front-end?

I run an indie studio, mostly doing digital art, 3D animation, and virtual film production . . . but also web dev with prior experience in running all aspects of e-commerce (IT back & front, and business).

It’s been interesting to read through previous Algorand forum threads. I’ve also been reading through the Algorand Discord server channels and watched some Algorand YouTube videos.

A few months ago I selected Algorand as the blockchain for our NFT & Metaverse project. We’re now at the blockchain development stage. I’ve been researching suitable web development architecture for implementing a well-featured NFT Marketplace on the web. We want this marketplace restricted to trading only our studio’s NFTs, i.e. not an open marketplace.

However, I have more questions than answers. Even though I can see the Algorand ecosystem is growing and being supported by numerous frameworks and coding languages, I find very few docs and examples showing full production examples.

By “full production examples” I mean examples outlining development from back-end through to UI front-end. I’ve been working through Reach tutorials after installing Docker and Visual Studio. Most of the tutorials on my local machine run in the Terminal window.

This is where I have a gap in my understanding. I understood very well how to go from a PHP+MySQL back-end to a HTML+CSS+Javascript front-end in the client’s browser.

Can someone please explain how to deliver an Algorand NFT Marketplace inside my client’s browser?

What does the architecture set-up look like?

Is Reach a good fit for a production-ready NFT Marketplace? How does Reach output HTML, etc. to the web browser?

Or should I be looking at PyTeal or Javascript? If so, what will the architecture set-up look like?

Another thing which bothers me is that the Algorand blockchain specification also goes through feature upgrades, leaving me looking at outdated tutorials.

I guess my dilemma is lacking big-picture overview answers. I’m not worried about learning new coding languages and doing all the set-up work. I just don’t exactly understand what route to take. I’ve found so few discussions around this, that I’m confused. I’ve even looked at the Tatum framework.

My apologies for the long post. I’m super keen to develop our project on the Algorand blockchain.

Hi.
I am a professional blockchain developer.
I am really interested in discussing with you about Building Algorand.
I sent connect request on linkedin.
David Tanaka
Thanks.

Hi David,

Thanks for the link request.

It can be difficult to find good documentation with Algorand sometimes - Here is a tutorial for what you’re asking - https://developer.algorand.org/tutorials/creating-an-nftmarketplace/
I am a JS developer and tried using Reach but found it very cumbersome and kinda gave up on it. There are plans to bring solidity the EVM to the AVM but for now for your needs you’ll probably need more than just Algorand SDK and you will need to either create smart contracts in PyTeal or Reach

Thanks for your reply!

A brief chat with the author of that tutorial yielded this response on 14 Sep 2022:

However, I must say it is a bit outdated. The Algorand protocol a lot of updates after the publication of the article, so there are many better ways to develop a marketplace. Though the article is a good start.

I’m keen to learn about these “many better ways” soon.

This shows the architecture of what a decentralized app would look like.

It is not too different from a typical full-stack application. You would use the Algorand SDK to write code for deploying and calling your nft marketplace smart contract. It is like an API call. You can do this directly from your frontend to make your dapp truly decentralized (no web server) or if you can implement SDK code in your web server and make API calls to those functions from the front end.

I recommend using Pyteal + Beaker for writing your smart contract and the Algorand SDK (you can choose from the 4 languages: javascript, java, python, go) to deploy and call your smart contract.

Beaker: GitHub - algorand-devrel/beaker: A framework for writing Smart Contracts on Algorand
PyTeal: GitHub - algorand/pyteal: Algorand Smart Contracts in Python

To give more info on Beaker, it is a python smart contract framework that makes your smart contract pyteal code look more like a python class and abstracts away the complexity regarding smart contract development.

The Algorand Developer Relations team is currently working on several boilerplate apps that show the full architecture. I recommend you read this article on extendable DAO. How does an Extendable DAO work? | Algorand Developer Portal

We also have Box storage coming soon which will allow you to essentially have infinite storage on your smart contract. You can read about it here: (BETA) Smart Contract Storage: Boxes | Algorand Developer Portal

I hope this helps!

2 Likes

Thanks Chris!

Your reply certainly gives fresh insight and understanding, confirming my direction of the past few days. Thanks also for the Beaker links.

As a developer coming from “old tech” I’ve got some catching up to do.

I’ve set up a Python dev environment on a workstation running Ubuntu. It totally beats working in Windows and even on my Mac, both which I used at first. During my previous web dev phase a few years back, I worked remotely on Ubuntu servers, so it’s good to be back—this time so much faster on a local Linux machine.

I’m looking forward to this Algorand blockchain development quest.

1 Like

Regarding the Algorand tutorial Creating an NFTMarketplace by Vilijan Monev (29 September 2021) . . .

By scouring through relevant YouTube comments, I’ve located further insight by the author made in the GitHub Issues pages for that project, which includes a link to another project by the same author which uses a different (more current) approach after the Algorand Virtual Machine was updated . . .

Tokility by Vilijan Monev (26 October 2021)

Some questions arise:

  • Is the approach used in Tokility still current?
  • Are there more recent AVM features for NFT minting and NFT Marketplaces?
  • Is there an online resource to see the latest AVM features?