PageSourceSearch

https://docs.tableland.xyz/assets/js/3b0dd12b.9424d2bc.js

js tableland.xyz collected 2026-10-03 22:20:21 UTC 4,779 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4931],{941838:(t,a,e)=>{e.r(a),e.d(a,{assets:()=>r,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var n=e(785893),o=e(511151);const s={title:"How to build an NFT",description:"Store NFT metadata in tables that capture chain-driven data changes.",keywords:["nft metadata","erc721 metadata","how to build an nft"]},i=void 0,l={id:"playbooks/concepts/how-to-build-an-nft",title:"How to build an NFT",description:"Store NFT metadata in tables that capture chain-driven data changes.",source:"@site/docs/playbooks/concepts/how-to-build-an-nft.md",sourceDirName:"playbooks/concepts",slug:"/playbooks/concepts/how-to-build-an-nft",permalink:"/playbooks/concepts/how-to-build-an-nft",draft:!1,unlisted:!1,editUrl:"https://github.com/tablelandnetwork/docs/tree/main/docs/playbooks/concepts/how-to-build-an-nft.md",tags:[],version:"current",lastUpdatedBy:"Dan Buchholz",lastUpdatedAt:1710965587e3,frontMatter:{title:"How to build an NFT",description:"Store NFT metadata in tables that capture chain-driven data changes.",keywords:["nft metadata","erc721 metadata","how to build an nft"]},sidebar:"playbooks",previous:{title:"NFT metadata standards",permalink:"/playbooks/concepts/nft-metadata"},next:{title:"SQL blueprints",permalink:"/playbooks/blueprints"}},r={},d=[{value:"Learn",id:"learn",level:2},{value:"Develop",id:"develop",level:2}];function c(t){const a={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,o.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.p,{children:"Tableland closes the gap between onchain and offchain state synchronicity, which is especially useful for NFT developers. Namely, onchain can automatically drive offchain metadata changes while also offering performant query capabilities at the application layer."}),"\n",(0,n.jsx)(a.h2,{id:"learn",children:"Learn"}),"\n",(0,n.jsx)(a.p,{children:"To get started, check out the following pages that provide general NFT metadata overviews and Tableland SQL usage:"}),"\n",(0,n.jsxs)(a.ul,{children:["\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/playbooks/concepts/nft-metadata",children:"NFT metadata standards"}),": A 101 about NFT metadata and the various standards used in web3."]}),"\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/playbooks/concepts/nft-metadata",children:"SQL table design"}),": Learn about how you can structure data across one or more tables and compose the metadata using SQL + JSON functions."]}),"\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/fundamentals/use-cases/#nfts--gaming",children:"NFT uses cases"}),": Dive into basics about what you can build with NFTs, including how web3 gaming can benefit from using Tableland."]}),"\n"]}),"\n",(0,n.jsx)(a.h2,{id:"develop",children:"Develop"}),"\n",(0,n.jsx)(a.p,{children:"For those looking to build, the following highlight how to use smart contracts and/or the Tableland SDK for NFT metadata:"}),"\n",(0,n.jsxs)(a.ul,{children:["\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/smart-contracts/serving-nft-metadata",children:"Serving NFT metadata"}),": Gain familiarity with how a smart contract can serve NFT metadata using SQL queries to the Tableland gateway."]}),"\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/smart-contracts/uri-encoding",children:"URI encoding"}),": Use JavaScript in smart contract deploy scripts to set a token URI with the proper encoding."]}),"\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/tutorials/dynamic-nft-solidity",children:"Build a dynamic NFT in Solidity"}),": Get started with the basics of a Solidity-based NFT game that uses SQL queries to create and populate a table of game state."]}),"\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/tutorials/dynamic-nft-p5js",children:"Creating a dynamic NFT with p5.js"}),": Add visual components to the intro tutorial about that walks through building a dynamic NFT in Solidity."]}),"\n",(0,n.jsxs)(a.li,{children:[(0,n.jsx)(a.a,{href:"/tutorials/json-files-nft-polygon",children:"JSON files to NFT metadata"}),": With a Hardhat project, take local JSON files, read/parse the data into tables, and then mint an NFT where Tableland powers the metadata."]}),"\n"]})]})}function h(t={}){const{wrapper:a}={...(0,o.a)(),...t.components};return a?(0,n.jsx)(a,{...t,children:(0,n.jsx)(c,{...t})}):c(t)}},511151:(t,a,e)=>{e.d(a,{Z:()=>l,a:()=>i});var n=e(667294);const o={},s=n.createContext(o);function i(t){const a=n.useContext(s);return n.useMemo((function(){return"function"==typeof t?t(a):{...a,...t}}),[a,t])}function l(t){let a;return a=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:i(t.components),n.createElement(s.Provider,{value:a},t.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.