From 0de013853f7550f7b8a75cb09c89c34425d9ce18 Mon Sep 17 00:00:00 2001 From: taycaldwell Date: Thu, 4 Apr 2024 10:35:34 -0700 Subject: [PATCH] Add tutorial categories and filtering (#404) * Add tutorial filters * update size and styling * Update styling * Remove console.log --- apps/base-docs/src/pages/tutorials/index.jsx | 63 +++++++++- .../src/pages/tutorials/styles.module.css | 40 ++++++ apps/base-docs/tutorials/data.json | 116 ++++++++++++++++++ .../tutorials/docs/0_deploy-with-foundry.md | 2 + .../tutorials/docs/0_deploy-with-hardhat.mdx | 2 + .../tutorials/docs/0_deploy-with-remix.md | 2 + .../tutorials/docs/0_deploy-with-tenderly.md | 2 + .../tutorials/docs/0_deploy-with-thirdweb.md | 2 + .../tutorials/docs/0_run-a-base-node.md | 2 + .../tutorials/docs/1_build-with-thirdweb.md | 2 + .../2_account-abstraction-with-biconomy.md | 2 + ...straction-with-privy-and-base-paymaster.md | 2 + .../tutorials/docs/2_cross-chain-with-ccip.md | 2 + .../docs/2_cross-chain-with-layerzero.md | 2 + .../tutorials/docs/2_onchain-nfts.md | 2 + .../docs/2_oracles-chainlink-price-feeds.md | 2 + .../docs/2_oracles-pyth-price-feeds.md | 2 + .../tutorials/docs/2_oracles-supra-vrf.md | 2 + .../3_farcaster-frames-deploy-to-vercel.md | 2 + ...3_farcaster-frames-gating-and-redirects.md | 2 + .../docs/3_farcaster-frames-hyperframes.md | 2 + .../docs/3_farcaster-frames-nft-minting.md | 2 + .../docs/3_farcaster-frames-nocode-minting.md | 2 + .../docs/3_farcaster-frames-transactions.md | 2 + .../tutorials/docs/4_hardhat-debugging.md | 2 + .../tutorials/docs/4_hardhat-profiling-gas.md | 2 + .../docs/4_hardhat-profiling-size.md | 2 + .../tutorials/docs/4_hardhat-test-coverage.md | 2 + .../docs/4_intro-to-foundry-setup.md | 2 + .../docs/4_intro-to-foundry-testing.md | 2 + .../tutorials/docs/4_intro-to-providers.md | 2 + 31 files changed, 269 insertions(+), 6 deletions(-) diff --git a/apps/base-docs/src/pages/tutorials/index.jsx b/apps/base-docs/src/pages/tutorials/index.jsx index 0a995b00b0..c07b4e9513 100644 --- a/apps/base-docs/src/pages/tutorials/index.jsx +++ b/apps/base-docs/src/pages/tutorials/index.jsx @@ -1,4 +1,5 @@ // eslint-disable-next-line import/no-unresolved +import { useCallback, useState } from 'react'; import Layout from '@theme/Layout'; import { Link } from 'react-router-dom'; import { ThemeClassNames } from '@docusaurus/theme-common'; @@ -9,6 +10,36 @@ import styles from './styles.module.css'; import tutorialData from '../../../tutorials/data.json'; import authors from '@app/base-docs/static/json/authors.json'; +const TagList = [ + 'all', + 'smart contracts', + 'nodes', + 'nft', + 'account abstraction', + 'cross-chain', + 'oracles', + 'vrf', + 'frames', +]; + +function TagChip({ tag, isSelected, setSelectedTag }) { + const select = useCallback(() => { + setSelectedTag(tag); + }, [tag, setSelectedTag]); + + return ( + + ); +} + const handleClick = (event) => { event.stopPropagation(); }; @@ -19,9 +50,7 @@ function TutorialListCell({ tutorial }) {
- - {tutorial.title} - +

{tutorial.title}

{authorData && authorData.link && ( @@ -39,6 +68,10 @@ function TutorialListCell({ tutorial }) {

{tutorial.description}

)} +
+ {tutorial.tags && + tutorial.tags.map((tag) =>

{tag}

)} +
); @@ -47,6 +80,12 @@ function TutorialListCell({ tutorial }) { const TITLE = 'Base Builder Tutorials'; export default function Tutorials() { + const [selectedTag, setSelectedTag] = useState('all'); + + const selectTag = (tag) => { + setSelectedTag(tag); + }; + return (
@@ -59,11 +98,23 @@ export default function Tutorials() { {TITLE} +
+ {TagList.map((tag) => ( + + ))} +
{tutorialData && - Object.values(tutorialData).map((tutorial) => ( - - ))} + Object.values(tutorialData) + .filter((tutorial) => + selectedTag == 'all' ? tutorial : tutorial.tags.includes(selectedTag), + ) + .map((tutorial) => )}
diff --git a/apps/base-docs/src/pages/tutorials/styles.module.css b/apps/base-docs/src/pages/tutorials/styles.module.css index ed185ab246..5dca9c1b03 100644 --- a/apps/base-docs/src/pages/tutorials/styles.module.css +++ b/apps/base-docs/src/pages/tutorials/styles.module.css @@ -1,3 +1,43 @@ +.tag { + padding: 0.75rem 1.75rem; + font-family: CoinbaseSans !important; + text-transform: uppercase; + font-size: 0.75rem; + font-weight: 450; +} + +.tagButton { + border-radius: 100px; + background-color: transparent; + border: 1px solid var(--base-docs-color-line-heavy); + background-color: var(--base-docs-color-bg); + cursor: pointer; +} + +.tagButtonActive { + background-color: var(--base-docs-color-secondary); +} + +.tagList { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 0.75rem; + margin-bottom: 25px; +} + +.tutorialListTag { + padding: 0.7rem 1.7rem; + font-family: CoinbaseSans !important; + text-transform: uppercase; + font-size: 0.7rem; + font-weight: 425; + border-radius: 100px; + background-color: transparent; + color: var(--base-docs-color-fg-muted); + border: 0.75px solid var(--base-docs-color-line-heavy); +} + .tutorialsMainContainer a, .tutorialsMainContainer a:hover { text-decoration: none; diff --git a/apps/base-docs/tutorials/data.json b/apps/base-docs/tutorials/data.json index 854e16b8a5..eed8257d25 100644 --- a/apps/base-docs/tutorials/data.json +++ b/apps/base-docs/tutorials/data.json @@ -19,6 +19,10 @@ "write smart contract", "smart contract development" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "17 mins" @@ -43,6 +47,10 @@ "write smart contract", "smart contract development" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "15 mins" @@ -68,6 +76,10 @@ "smart contract development", "online IDE" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "18 mins" @@ -94,6 +106,10 @@ "smart contract on Base", "build on Base" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "19 mins" @@ -123,6 +139,10 @@ "smart contract on Base", "build on Base" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "10 mins" @@ -146,6 +166,10 @@ "node deployment", "Ethereum node" ], + "tags": [ + "nodes" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "5 mins" @@ -173,6 +197,11 @@ "build a dapp on Base", "build on Base" ], + "tags": [ + "smart contracts", + "nft" + ], + "difficulty": "beginner", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "8 mins" @@ -195,6 +224,10 @@ "Particle Network", "Particle Auth" ], + "tags": [ + "account abstraction" + ], + "difficulty": "intermediate", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "29 mins" @@ -217,6 +250,10 @@ "Base paymaster", "embedded wallet" ], + "tags": [ + "account abstraction" + ], + "difficulty": "intermediate", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -238,6 +275,10 @@ "cross-chain messaging", "transfer tokens across chains" ], + "tags": [ + "cross-chain" + ], + "difficulty": "intermediate", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "32 mins" @@ -258,6 +299,10 @@ "cross-chain messaging", "transfer tokens across chains" ], + "tags": [ + "cross-chain" + ], + "difficulty": "intermediate", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "34 mins" @@ -281,6 +326,10 @@ "pseudorandom numbers", "deterministic randomness" ], + "tags": [ + "nft" + ], + "difficulty": "intermediate", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -306,6 +355,10 @@ "build a dapp on Base", "build on Base" ], + "tags": [ + "oracles" + ], + "difficulty": "intermediate", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "11 mins" @@ -331,6 +384,10 @@ "build a dapp on Base", "build on Base" ], + "tags": [ + "oracles" + ], + "difficulty": "intermediate", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "13 mins" @@ -363,6 +420,11 @@ "build a dapp on Base", "build on Base" ], + "tags": [ + "oracles", + "vrf" + ], + "difficulty": "intermediate", "displayed_sidebar": null, "last_updated": "Apr 3", "duration": "19 mins" @@ -380,6 +442,10 @@ "a frame in 100 lines", "deploy" ], + "tags": [ + "frames" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -395,6 +461,10 @@ "frames", "farcaster frames" ], + "tags": [ + "frames" + ], + "difficulty": "intermediate", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -417,6 +487,10 @@ "frame state", "Base" ], + "difficulty": "intermediate", + "tags": [ + "frames" + ], "last_updated": "Apr 3", "duration": "16 mins" }, @@ -434,6 +508,11 @@ "frames", "farcaster frames" ], + "tags": [ + "frames", + "nft" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -454,6 +533,11 @@ "farcaster frames", "mint" ], + "tags": [ + "frames", + "nft" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -472,6 +556,10 @@ "transaction", "Base" ], + "tags": [ + "frames" + ], + "difficulty": "intermediate", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -490,6 +578,10 @@ "error resolution", "decentralized applications" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -511,6 +603,10 @@ "contract optimization", "gas-efficient contracts" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -533,6 +629,10 @@ "Solidity Optimizer", "Smart Contract Development" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -555,6 +655,10 @@ "Code Testing", "Test Suite Analysis" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -572,6 +676,10 @@ "smart contract development", "toolchain" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -591,6 +699,10 @@ "testing", "test" ], + "tags": [ + "smart contracts" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", @@ -636,6 +748,10 @@ "public provider", "smart contract development" ], + "tags": [ + "nodes" + ], + "difficulty": "beginner", "hide_table_of_contents": false, "displayed_sidebar": null, "last_updated": "Apr 3", diff --git a/apps/base-docs/tutorials/docs/0_deploy-with-foundry.md b/apps/base-docs/tutorials/docs/0_deploy-with-foundry.md index 7c62b6d3bc..9bbcfc91e9 100644 --- a/apps/base-docs/tutorials/docs/0_deploy-with-foundry.md +++ b/apps/base-docs/tutorials/docs/0_deploy-with-foundry.md @@ -6,6 +6,8 @@ setting up the environment, compiling, and deploying the smart contract." author: neodaoist keywords: ["Foundry", "smart contract", "ERC-721", "Base", "Base test network", "Base testnet", "Rust", "Solidity", "smart contract deployment", "deploy a smart contract", "build on base", "write smart contract", "smart contract development"] +tags: ["smart contracts"] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/0_deploy-with-hardhat.mdx b/apps/base-docs/tutorials/docs/0_deploy-with-hardhat.mdx index f384bf6c00..c2aa3cf890 100644 --- a/apps/base-docs/tutorials/docs/0_deploy-with-hardhat.mdx +++ b/apps/base-docs/tutorials/docs/0_deploy-with-hardhat.mdx @@ -6,6 +6,8 @@ setting up the environment, compiling, and deploying the smart contract." author: taycaldwell keywords: ["Hardhat", "smart contract", "ERC-721", "Base", "Base test network", "Base testnet", "Node.js", "Solidity", "smart contract deployment", "deploy a smart contract", "build on base", "write smart contract", "smart contract development"] +tags: ["smart contracts"] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/0_deploy-with-remix.md b/apps/base-docs/tutorials/docs/0_deploy-with-remix.md index c64d1d0b79..7ebe1dc8f5 100644 --- a/apps/base-docs/tutorials/docs/0_deploy-with-remix.md +++ b/apps/base-docs/tutorials/docs/0_deploy-with-remix.md @@ -5,6 +5,8 @@ description: "A tutorial that teaches how to deploy a smart contract on the Base setting up the environment, compiling, and deploying the smart contract." author: briandoyle81 keywords: ["Remix", "Remix IDE", "smart contract", "Base", "Base test network", "Base testnet", "Node.js", "Solidity", "smart contract deployment", "deploy a smart contract", "build on Base", "write smart contract", "smart contract development", "online IDE"] +tags: ["smart contracts"] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/0_deploy-with-tenderly.md b/apps/base-docs/tutorials/docs/0_deploy-with-tenderly.md index 7c4b3e4684..c605a700bb 100644 --- a/apps/base-docs/tutorials/docs/0_deploy-with-tenderly.md +++ b/apps/base-docs/tutorials/docs/0_deploy-with-tenderly.md @@ -21,6 +21,8 @@ keywords: smart contract on Base, build on Base, ] +tags: ['smart contracts'] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/0_deploy-with-thirdweb.md b/apps/base-docs/tutorials/docs/0_deploy-with-thirdweb.md index 0c2965f6cc..affc39b5c5 100644 --- a/apps/base-docs/tutorials/docs/0_deploy-with-thirdweb.md +++ b/apps/base-docs/tutorials/docs/0_deploy-with-thirdweb.md @@ -24,6 +24,8 @@ keywords: 'smart contract on Base', 'build on Base', ] +tags: ['smart contracts'] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/0_run-a-base-node.md b/apps/base-docs/tutorials/docs/0_run-a-base-node.md index 59cc41c7fc..607e9122de 100644 --- a/apps/base-docs/tutorials/docs/0_run-a-base-node.md +++ b/apps/base-docs/tutorials/docs/0_run-a-base-node.md @@ -18,6 +18,8 @@ keywords: node deployment, Ethereum node, ] +tags: ['nodes'] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/1_build-with-thirdweb.md b/apps/base-docs/tutorials/docs/1_build-with-thirdweb.md index 6ce7c787a7..74e37b5b3b 100644 --- a/apps/base-docs/tutorials/docs/1_build-with-thirdweb.md +++ b/apps/base-docs/tutorials/docs/1_build-with-thirdweb.md @@ -22,6 +22,8 @@ keywords: build a dapp on Base, build on Base, ] +tags: ['smart contracts', 'nft'] +difficulty: beginner displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_account-abstraction-with-biconomy.md b/apps/base-docs/tutorials/docs/2_account-abstraction-with-biconomy.md index 236d1d3bf8..a25947a117 100644 --- a/apps/base-docs/tutorials/docs/2_account-abstraction-with-biconomy.md +++ b/apps/base-docs/tutorials/docs/2_account-abstraction-with-biconomy.md @@ -17,6 +17,8 @@ keywords: Particle Network, Particle Auth, ] +tags: ['account abstraction'] +difficulty: intermediate displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_account-abstraction-with-privy-and-base-paymaster.md b/apps/base-docs/tutorials/docs/2_account-abstraction-with-privy-and-base-paymaster.md index c70fbb4987..39294d2ace 100644 --- a/apps/base-docs/tutorials/docs/2_account-abstraction-with-privy-and-base-paymaster.md +++ b/apps/base-docs/tutorials/docs/2_account-abstraction-with-privy-and-base-paymaster.md @@ -17,6 +17,8 @@ keywords: Base paymaster, embedded wallet, ] +tags: ['account abstraction'] +difficulty: intermediate hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_cross-chain-with-ccip.md b/apps/base-docs/tutorials/docs/2_cross-chain-with-ccip.md index 3b991381e9..c5fea63932 100644 --- a/apps/base-docs/tutorials/docs/2_cross-chain-with-ccip.md +++ b/apps/base-docs/tutorials/docs/2_cross-chain-with-ccip.md @@ -15,6 +15,8 @@ keywords: cross-chain messaging, transfer tokens across chains, ] +tags: ['cross-chain'] +difficulty: intermediate displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_cross-chain-with-layerzero.md b/apps/base-docs/tutorials/docs/2_cross-chain-with-layerzero.md index 392f16b89e..0329811345 100644 --- a/apps/base-docs/tutorials/docs/2_cross-chain-with-layerzero.md +++ b/apps/base-docs/tutorials/docs/2_cross-chain-with-layerzero.md @@ -15,6 +15,8 @@ eywords: cross-chain messaging, transfer tokens across chains, ] +tags: ['cross-chain'] +difficulty: intermediate displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_onchain-nfts.md b/apps/base-docs/tutorials/docs/2_onchain-nfts.md index daf74816db..4ca913ed26 100644 --- a/apps/base-docs/tutorials/docs/2_onchain-nfts.md +++ b/apps/base-docs/tutorials/docs/2_onchain-nfts.md @@ -18,6 +18,8 @@ keywords: pseudorandom numbers, deterministic randomness, ] +tags: ['nft'] +difficulty: intermediate hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_oracles-chainlink-price-feeds.md b/apps/base-docs/tutorials/docs/2_oracles-chainlink-price-feeds.md index d1678f5b69..8dc3e0ef24 100644 --- a/apps/base-docs/tutorials/docs/2_oracles-chainlink-price-feeds.md +++ b/apps/base-docs/tutorials/docs/2_oracles-chainlink-price-feeds.md @@ -19,6 +19,8 @@ keywords: [ build a dapp on Base, build on Base, ] +tags: ['oracles'] +difficulty: intermediate displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_oracles-pyth-price-feeds.md b/apps/base-docs/tutorials/docs/2_oracles-pyth-price-feeds.md index c61e55e8ed..7e8221eacb 100644 --- a/apps/base-docs/tutorials/docs/2_oracles-pyth-price-feeds.md +++ b/apps/base-docs/tutorials/docs/2_oracles-pyth-price-feeds.md @@ -20,6 +20,8 @@ keywords: [ build a dapp on Base, build on Base, ] +tags: ['oracles'] +difficulty: intermediate displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/2_oracles-supra-vrf.md b/apps/base-docs/tutorials/docs/2_oracles-supra-vrf.md index f0b61669e1..65fcca3671 100644 --- a/apps/base-docs/tutorials/docs/2_oracles-supra-vrf.md +++ b/apps/base-docs/tutorials/docs/2_oracles-supra-vrf.md @@ -27,6 +27,8 @@ keywords: [ build a dapp on Base, build on Base, ] +tags: ['oracles', 'vrf'] +difficulty: intermediate displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/3_farcaster-frames-deploy-to-vercel.md b/apps/base-docs/tutorials/docs/3_farcaster-frames-deploy-to-vercel.md index 5e2638484d..7442ee2e9e 100644 --- a/apps/base-docs/tutorials/docs/3_farcaster-frames-deploy-to-vercel.md +++ b/apps/base-docs/tutorials/docs/3_farcaster-frames-deploy-to-vercel.md @@ -12,6 +12,8 @@ keywords: [ a frame in 100 lines, deploy, ] +tags: ['frames'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/3_farcaster-frames-gating-and-redirects.md b/apps/base-docs/tutorials/docs/3_farcaster-frames-gating-and-redirects.md index 7678d7e8e1..3e5f1a3e4f 100644 --- a/apps/base-docs/tutorials/docs/3_farcaster-frames-gating-and-redirects.md +++ b/apps/base-docs/tutorials/docs/3_farcaster-frames-gating-and-redirects.md @@ -4,6 +4,8 @@ slug: /farcaster-frames-gating-and-redirects description: A tutorial that teaches how to create Frames with more advanced behaviors such as gating content based on a user's follows, likes, or recasts, and creating redirect buttons. author: briandoyle81 keywords: [farcaster, frames, farcaster frames] +tags: ['frames'] +difficulty: intermediate hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/3_farcaster-frames-hyperframes.md b/apps/base-docs/tutorials/docs/3_farcaster-frames-hyperframes.md index c8d15fe6ba..c99f28c2b8 100644 --- a/apps/base-docs/tutorials/docs/3_farcaster-frames-hyperframes.md +++ b/apps/base-docs/tutorials/docs/3_farcaster-frames-hyperframes.md @@ -6,6 +6,8 @@ author: briandoyle81 hide_table_of_contents: false displayed_sidebar: null keywords: [farcaster, frames, farcaster frames, hyperframes, hyper frames, state, frame state, Base] +difficulty: intermediate +tags: ['frames'] --- [Frames] on [Farcaster] are getting more complex. Developers are now building interactions that require a handful, or even dozens of frames in response to various user states, inputs, and actions. HyperFrames are a system to organize navigation for large numbers of frames, using [OnchainKit]. In this tutorial, we'll use making the navigation for an [old-school adventure game] fully in a frame. You can use this same technique for many other intents with your Frames, such as games, stores, customized mints, etc. diff --git a/apps/base-docs/tutorials/docs/3_farcaster-frames-nft-minting.md b/apps/base-docs/tutorials/docs/3_farcaster-frames-nft-minting.md index f666f17d4c..0a4d0e711e 100644 --- a/apps/base-docs/tutorials/docs/3_farcaster-frames-nft-minting.md +++ b/apps/base-docs/tutorials/docs/3_farcaster-frames-nft-minting.md @@ -4,6 +4,8 @@ slug: /farcaster-frames-nft-minting description: A tutorial that teaches how to make a Farcaster Frame that allows you to mint and airdrop NFTs to users. author: briandoyle81 keywords: [Solidity, ERC-721, token, NFT, farcaster, frames, farcaster frames] +tags: ['frames', 'nft'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/3_farcaster-frames-nocode-minting.md b/apps/base-docs/tutorials/docs/3_farcaster-frames-nocode-minting.md index 0e3201dfd0..54a9f4692e 100644 --- a/apps/base-docs/tutorials/docs/3_farcaster-frames-nocode-minting.md +++ b/apps/base-docs/tutorials/docs/3_farcaster-frames-nocode-minting.md @@ -4,6 +4,8 @@ slug: /farcaster-frames-nocode-minting description: A tutorial that teaches how to make a Farcaster Frame with an outbound link to an NFT minting website. author: briandoyle81 keywords: [Solidity, ERC-721, token, NFT, farcaster, frames, farcaster frames, mint] +tags: ['frames', 'nft'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/3_farcaster-frames-transactions.md b/apps/base-docs/tutorials/docs/3_farcaster-frames-transactions.md index 93aa0ece30..391a9a6d93 100644 --- a/apps/base-docs/tutorials/docs/3_farcaster-frames-transactions.md +++ b/apps/base-docs/tutorials/docs/3_farcaster-frames-transactions.md @@ -4,6 +4,8 @@ slug: /farcaster-frames-transactions description: A tutorial that teaches how to invoke a wallet transaction from a Farcaster Frame. author: briandoyle81 keywords: [farcaster, frames, farcaster frames, wallet, transaction, Base] +tags: ['frames'] +difficulty: intermediate hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_hardhat-debugging.md b/apps/base-docs/tutorials/docs/4_hardhat-debugging.md index 0c5cc47620..df3e8034ac 100644 --- a/apps/base-docs/tutorials/docs/4_hardhat-debugging.md +++ b/apps/base-docs/tutorials/docs/4_hardhat-debugging.md @@ -12,6 +12,8 @@ keywords: error resolution, decentralized applications, ] +tags: ['smart contracts'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_hardhat-profiling-gas.md b/apps/base-docs/tutorials/docs/4_hardhat-profiling-gas.md index cc17cd3efc..a6c505a244 100644 --- a/apps/base-docs/tutorials/docs/4_hardhat-profiling-gas.md +++ b/apps/base-docs/tutorials/docs/4_hardhat-profiling-gas.md @@ -15,6 +15,8 @@ keywords: contract optimization, gas-efficient contracts, ] +tags: ['smart contracts'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_hardhat-profiling-size.md b/apps/base-docs/tutorials/docs/4_hardhat-profiling-size.md index 42053ad15b..713fb1fe01 100644 --- a/apps/base-docs/tutorials/docs/4_hardhat-profiling-size.md +++ b/apps/base-docs/tutorials/docs/4_hardhat-profiling-size.md @@ -16,6 +16,8 @@ keywords: Solidity Optimizer, Smart Contract Development, ] +tags: ['smart contracts'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_hardhat-test-coverage.md b/apps/base-docs/tutorials/docs/4_hardhat-test-coverage.md index bc3eb64aaf..24c9ca50ea 100644 --- a/apps/base-docs/tutorials/docs/4_hardhat-test-coverage.md +++ b/apps/base-docs/tutorials/docs/4_hardhat-test-coverage.md @@ -16,6 +16,8 @@ keywords: Code Testing, Test Suite Analysis, ] +tags: ['smart contracts'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_intro-to-foundry-setup.md b/apps/base-docs/tutorials/docs/4_intro-to-foundry-setup.md index 5507fe52a4..58f3fcc4e0 100644 --- a/apps/base-docs/tutorials/docs/4_intro-to-foundry-setup.md +++ b/apps/base-docs/tutorials/docs/4_intro-to-foundry-setup.md @@ -4,6 +4,8 @@ slug: /intro-to-foundry-setup description: A tutorial that teaches how to set up your development environment to work with Foundry. author: briandoyle81 keywords: [Foundry, Forge, Foundry Book, smart contract development, toolchain] +tags: ['smart contracts'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_intro-to-foundry-testing.md b/apps/base-docs/tutorials/docs/4_intro-to-foundry-testing.md index 7e7d57e345..5abb7f6aae 100644 --- a/apps/base-docs/tutorials/docs/4_intro-to-foundry-testing.md +++ b/apps/base-docs/tutorials/docs/4_intro-to-foundry-testing.md @@ -4,6 +4,8 @@ slug: /intro-to-foundry-testing author: briandoyle81 description: A tutorial that teaches how to test your smart contracts using Foundry. keywords: [Foundry, Forge, Foundry Book, smart contract development, toolchain, testing, test] +tags: ['smart contracts'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null --- diff --git a/apps/base-docs/tutorials/docs/4_intro-to-providers.md b/apps/base-docs/tutorials/docs/4_intro-to-providers.md index 708b77f689..9bd5ac1e6b 100644 --- a/apps/base-docs/tutorials/docs/4_intro-to-providers.md +++ b/apps/base-docs/tutorials/docs/4_intro-to-providers.md @@ -39,6 +39,8 @@ keywords: public provider, smart contract development, ] +tags: ['nodes'] +difficulty: beginner hide_table_of_contents: false displayed_sidebar: null ---