---
id: introduction
title: NFT Zero to Hero JavaScript Edition
sidebar_label: Introduction
---

> In this _Zero to Hero_ series, you'll find a set of tutorials that will cover every aspect of a non-fungible token (NFT) smart contract.
> You'll start by minting an NFT using a pre-deployed contract and by the end you'll end up building a fully-fledged NFT smart contract that supports every extension.



## Prerequisites

To complete these tutorials successfully, you'll need:

- [Node.js](/build/smart-contracts/quickstart#prerequisites#nodejs)
- [A NEAR Wallet](https://testnet.mynearwallet.com/create)
- [NEAR-CLI](/tools/near-cli#setup)

---

## Overview

These are the steps that will bring you from **_Zero_** to **_Hero_** in no time! 💪

| Step | Name                                                             | Description                                                                                                            |
|------|------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| 1    | [Pre-deployed contract](/tutorials/nfts/js/predeployed-contract) | Mint an NFT without the need to code, create, or deploy a smart contract.                                              |
| 2    | [Contract architecture](/tutorials/nfts/js/skeleton)             | Learn the basic architecture of the NFT smart contract and compile code.                                               |
| 3    | [Minting](/tutorials/nfts/js/minting)                            | Flesh out the skeleton so the smart contract can mint a non-fungible token.                                            |
| 4    | [Upgrade a contract](/tutorials/nfts/js/upgrade-contract)        | Discover the process to upgrade an existing smart contract.                                                            |
| 5    | [Enumeration](/tutorials/nfts/js/enumeration)                    | Explore enumeration methods that can be used to return the smart contract's states.                                    |
| 6    | [Core](/tutorials/nfts/js/core)                                  | Extend the NFT contract using the core standard which allows token transfer                                            |
| 7    | [Approvals](/tutorials/nfts/js/approvals)                        | Expand the contract allowing other accounts to transfer NFTs on your behalf.                                           |
| 8    | [Royalty](/tutorials/nfts/js/royalty)                            | Add NFT royalties allowing for a set percentage to be paid out to the token creator.                                   |
| 9    | [Events](/tutorials/nfts/js/events)                              | in this tutorial you'll explore the events extension, allowing the contract to react on certain events.                |
| 10   | [Marketplace](/tutorials/nfts/js/marketplace)                    | Learn about how common marketplaces operate on NEAR and dive into some of the code that allows buying and selling NFTs |

---

## Next steps

Ready to start? Jump to the [Pre-deployed Contract](/tutorials/nfts/js/predeployed-contract) tutorial and begin your learning journey!

If you already know about non-fungible tokens and smart contracts, feel free to skip and jump directly to the tutorial of your interest. The tutorials have been designed so you can start at any given point!

:::info Questions?
👉 Join us on [Discord](https://near.chat/) and let us know in the `#development` channels. 👈

We also host daily [Office Hours](https://pages.near.org/developers/get-help/office-hours/) live where the DevRel team will answer any questions you may have. 🤔

Monday – Friday 11AM – 12PM Pacific (6PM – 7PM UTC)
:::