From a31356c6f8eb5cbbf741809e4df1425e4c32f570 Mon Sep 17 00:00:00 2001 From: iammasterbrucewayne Date: Wed, 11 Jun 2025 14:16:16 +0530 Subject: [PATCH 1/2] WIP: dotpets content --- content/courses/dotpets/dotpets.mdx | 18 + .../lessons/wip-content/wip-content.mdx | 1439 +++++++++++++++++ .../sections/wip-section/wip-section.mdx | 8 + .../images/content/courses/dotpets/block1.png | Bin 0 -> 7542 bytes .../content/courses/dotpets/blockchain.png | Bin 0 -> 14358 bytes .../content/courses/dotpets/genesis.png | Bin 0 -> 5873 bytes .../content/courses/dotpets/linked-list.png | Bin 0 -> 186429 bytes .../content/courses/dotpets/tampering.png | Bin 0 -> 25318 bytes 8 files changed, 1465 insertions(+) create mode 100644 content/courses/dotpets/dotpets.mdx create mode 100644 content/courses/dotpets/sections/wip-section/lessons/wip-content/wip-content.mdx create mode 100644 content/courses/dotpets/sections/wip-section/wip-section.mdx create mode 100644 public/static/images/content/courses/dotpets/block1.png create mode 100644 public/static/images/content/courses/dotpets/blockchain.png create mode 100644 public/static/images/content/courses/dotpets/genesis.png create mode 100644 public/static/images/content/courses/dotpets/linked-list.png create mode 100644 public/static/images/content/courses/dotpets/tampering.png diff --git a/content/courses/dotpets/dotpets.mdx b/content/courses/dotpets/dotpets.mdx new file mode 100644 index 0000000..7ebb29d --- /dev/null +++ b/content/courses/dotpets/dotpets.mdx @@ -0,0 +1,18 @@ +--- +slug: dotpets +title: "DotPets: Web3 Frontend Fundamentals" +author: Batman +author_url: https://github.com/iammasterbrucewayne +description: Learn Web3 frontend fundamentals by building a pet game with NFTs on Polkadot. +level: Beginner +language: Typescript +tags: ["typscript", "tutorial", "course", "frontend"] +prerequisites: ["Next.js", "React", "Typescript"] +what_youll_learn: ["Connecting a Polkadot wallet to a frontend app", "Querying on-chain state (e.g., checking account balance or existing NFTs) using Polkadot API (PAPI)", "Minting a unique NFT (your DotPet) on Asset Hub", "This is where we’ll introduce the concept of extrinsics — what they are, why they’re called that, and how signed transactions affect chain state", "Viewing the NFT on Subscan or another explorer"] +estimated_time: 1 # Estimated time to complete in hours +last_updated: "2025-06-11" +--- + +DotPets is a tamagotchi-style on-chain pet game built using Polkadot Asset Hub and Polkadot-API. + +It is a fun, lightweight entry point into Web3 frontend development that teaches fundamentals like wallet connection, on-chain state, identity, and asset minting using Polkadot’s Asset Hub + Polkadot-API. diff --git a/content/courses/dotpets/sections/wip-section/lessons/wip-content/wip-content.mdx b/content/courses/dotpets/sections/wip-section/lessons/wip-content/wip-content.mdx new file mode 100644 index 0000000..38313dd --- /dev/null +++ b/content/courses/dotpets/sections/wip-section/lessons/wip-content/wip-content.mdx @@ -0,0 +1,1439 @@ +--- +slug: wip-content +title: WIP — DotPets — Web3 Frontend Fundamentals +order: 1 +description: WIP — DotPets — Web3 Frontend Fundamentals +--- + +*How to build frontend interfaces for blockchains and smart contracts?* + +> TODO: Redirect to blog post for "Why Web3?" + +See: +- https://0xtherealbatman.com/why-web3/ +- https://0xtherealbatman.com/nothing-owned/ + +# What is a blockchain anyway? + +> TODO: Add blog post for "What is a blockchain?" and move this content to the blog post. + +--- +*In this section we'll develop a mental model of a blockchain to work with. + +*This will be helpful while designing UI flows, debugging transaction issues, and choosing the right level of abstraction for your users.* + +*If you already have a high level understanding of blockchains or just want to use the APIs directly, feel free to skip ahead.* + +--- + +Put simply, a **blockchain is just a data structure**. + +If you're familiar with linked-lists, it's a special kind of **append-only linked list** that is tamper-evident, meaning you can add new entries, but cannot rewrite historical data without invalidating future records. + +> **NOTE:** If you don't know about linked lists, for now you can think of it as *a list of items* (called *nodes*) where **each item holds some data and points to the next one**. *(See the image below)* +> +> If you want to dive deeper or need a refresher on what is a linked list, see https://www.youtube.com/watch?v=F8AbOfQwl1c + +![linked-list.png](/static/images/content/courses/dotpets/linked-list.png) + +With that image in mind, each item in a blockchain is referred to as a "block". + +Each **block** contains: + +- **Data** (e.g. transactions) +- A **timestamp** +- A pointer to the **previous block** (a [**cryptographic hash**](https://www.investopedia.com/news/cryptographic-hash-functions/) of that block) + +![PlantUML Diagram](https://uml.planttext.com/plantuml/png/SoWkIImgAStDuSf9JIjHACbNACfCpoXHICaiIaqkoSpFumA2_AGi84V1AIS_EJlUGA6QIq51EoMn9154PoGMPu3eWgBKCWyWMy5M8Qyq9uUh5asR8Nvj6EgDI5HlJ5WzpFqskhfmHrafm5N0X13IHfZIHaZIniZI3gbvAS1W1000) + +*This is what a blockchain data structure looks like.* + +To understand how a blockchain forms and why it’s tamper-evident, let's walk through it one block at a time — and then see what happens when someone tries to change the past. + +**Step 1: Genesis** +_The blockchain starts with a single block: the genesis block, which has no previous hash._ + +![genesis.png](/static/images/content/courses/dotpets/genesis.png) + +**Step 2: Adding a block** +_A new block is added that references the hash of the genesis block — forming the first link in the chain._ + +![block1.png](/static/images/content/courses/dotpets/block1.png) + +**Step 3: A chain is formed** +_More blocks are added, each pointing to the hash of the block before it — creating a growing, tamper-resistant chain._ + +![blockchain.png](/static/images/content/courses/dotpets/blockchain.png) + + +**Now, what happens if a bad actor tries to tamper with the chain to rewrite history?** + +_If data in a previous block is modified, its hash changes — breaking all links that come after it and invalidating the chain._ + +![tampering.png](/static/images/content/courses/dotpets/tampering.png) + +> **IMPORTANT:** Note that this is different from our usual linked list in the following ways: + > +> 1. In a regular linked list, nodes just point to the next one by memory reference. +> 2. In a blockchain, blocks point backward — **each block contains the hash of the previous one**. +> 3. If someone tries to change any block's data, its hash changes, which **breaks the link** — and every block after it becomes invalid. + + +This chain of blocks creates a **tamper-evident history**. + +**Notice that we use the term tamper-evident, not tamper-resistant.** + +It is important to note a blockchain data structure by itself is merely *tamper-evident*, meaning you'll know when data has been tampered with, but that don't stop someone from rebuilding the whole chain to make the tampered block valid. + +So this by itself is not enough to offer strong guarantees of resilience or censorship- and tamper-resistance, which are all properties we want and expect from a blockchain. + +We solve for this by creating a **blockchain network.** + +## What is a blockchain network? + +A **blockchain network** is a group of computers that work together to agree on and maintain a shared, tamper-resistant history of data using the blockchain data structure. + +So, when we say that data on a blockchain is *tamper-resistant* what we're really talking about isn't just the blockchain data structure, but rather a **blockchain network**. + +**But how do these computers agree upon which blocks are valid and which ones are invalid?** + +These machines need a way to come to a *consensus*. + +That's where **consensus algorithms** come in. + +You may have heard of terms like *proof-of-work* or *proof-of-stake*, these are examples of **consensus algorithms**, which define the rules by which the network reaches agreement on what the next valid block should be. + +- In **proof-of-work** (like in Bitcoin), nodes solve complex puzzles to earn the right to add a new block — making it expensive to cheat. +- In **proof-of-stake** (used by Polkadot and others), nodes that hold more of the network’s token are selected to validate blocks — and can lose their stake if they act dishonestly. + +> **🔍 Side note:** +> +> There are also variations of proof-of-stake, like **DPoS (Delegated Proof of Stake)** and **NPoS (Nominated Proof of Stake)**. +> +> Polkadot uses **NPoS**, where token holders nominate *validators* (node operators that validate/invalidate blocks) they trust, creating a more decentralized and flexible form of stake-based consensus. + +We can have entire courses just talking about consensus, but that's outside the scope of this article. + +For the purpose of this article, you can assume that a consensus algorithm is just the way all the computers in the network **agree on what the next block should be**. + +It helps make sure that everyone sees the same version of the blockchain, and that **no one can cheat by secretly adding or changing data**. + +If you wish to dive deeper, here are some resource recommendations: + +- [What Are Consensus Mechanisms in Blockchain and Cryptocurrency? | Investopedia](https://www.investopedia.com/terms/c/consensus-mechanism-cryptocurrency.asp) +- [What Is Nominated Proof of Stake (NPoS)? | Ledger](https://www.ledger.com/academy/topics/blockchain/what-is-nominated-proof-of-stake-npos#:~:text=With%20NPoS%2C%20both%20nominators%20and,receive%20punishment%20for%20bad%20behavior.) +- [Nominated Proof-of-Stake | Research at Web3 Foundation](https://research.web3.foundation/Polkadot/protocols/NPoS) + +--- + + + +# Overview +### What Are We Building? +In this first part of the **DotPets** series, we’re going to build the foundation of a simple on-chain Tamagotchi-style pet game on **Polkadot’s Asset Hub** blockchain network. + +You won’t need to know anything about smart contracts or runtimes to follow along. Our focus is to get you up and running with **your first web3 frontend project** while learning how to interact with real on-chain assets using tools that Web3 frontend developers use every day. + +### What you'll learn +- Connect a Polkadot wallet (like [Talisman](https://talisman.xyz), [Nova](https://novawallet.io/) or [Subwallet](https://www.subwallet.app/)) to your frontend +- Read on-chain data like balances and NFTs using Polkadot’s chain state +- Mint a unique NFT on Asset Hub to represent your pet +- View your minted NFT on-chain using Subscan or any blockchain explorer +--- + +# Section 1: Initialization +### Step 1: Setting up our development environment +- Install node https://nodejs.org/en/download +- Install `pnpm` (for details see: https://pnpm.io/installation) + - `npm install -g pnpm@latest-10` +### Step 2: Initializing our project +We'll use Next.js with shadcn as our component library. + +1. Initialize the project using the following command in your terminal: +```bash +pnpm dlx shadcn@latest init --template next --base-color neutral +``` + +2. When prompted for the project name, write `dotpets` +```bash +$ pnpm dlx shadcn@latest init --template next --base-color neutral +? What is your project named? › dotpets +``` + +If everything works as expected you should see the following output in your terminal. + +```bash +$ pnpm dlx shadcn@latest init --template next --base-color neutral +✔ What is your project named? … dotpets +✔ Creating a new Next.js project. +✔ Writing components.json. +✔ Checking registry. +✔ Updating CSS variables in app/globals.css +✔ Installing dependencies. +✔ Created 1 file: + - lib/utils.ts + +Success! Project initialization completed. +You may now add components. +``` + +This should create a new directory `dotpets` with the boilerplate project files. + +3. Change working directory: +```bash +cd dotpets +``` + +4. Start your development server: +```bash +pnpm dev + +> dotpets@0.1.0 dev /Users/batman/Documents/Work/forks/Dot_Code_School/courses/dotpets +> next dev --turbopack + + ▲ Next.js 15.3.2 (Turbopack) + - Local: http://localhost:3000 + - Network: http://192.168.1.102:3000 + + ✓ Starting... + ✓ Ready in 720ms +``` + +When you visit http://localhost:3000 on your browser, you should see a page like this: + +![[Create Next App.jpeg]] + +In the next step, we'll configure prettier to keep our code clean and consistent. + +### Step 3: Configure Prettier +To keep our code clean, consistent and easy to read, we'll use the [prettier code formatter](https://prettier.io/) in this project. Let's walk through the setup process. + +1. Install the relevant prettier plugins to your project using the following command: +```bash +pnpm add -D prettier prettier-plugin-tailwindcss @trivago/prettier-plugin-sort-imports +``` + +2. Create a `.prettierrc` file with the following configuration: + +```json filename=".prettierrc" +{ + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "printWidth": 100, + "bracketSpacing": true, + "arrowParens": "always", + "endOfLine": "lf", + "plugins": ["@trivago/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"], + "importOrder": [ + "^react", + "^next", + "^@/components/(.*)$", + "^@/lib/(.*)$", + "^@/providers/(.*)$", + "^@/styles/(.*)$", + "^[./]" + ], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true +} +``` + +3. Add a `.prettierignore` file: + +```plaintext filename=".prettierignore" +.next +node_modules +public +pnpm-lock.yaml +``` + +4. Add these scripts to your `package.json` file: + +```json +{ + "scripts": { + "format": "prettier --write .", + "format:check": "prettier --check ." + } +} +``` + +Now, you can run `pnpm format` to format all files or `pnpm format:check` to check for formatting issues. + +--- +# Section 2: Setting up PAPI +### Step 4: Installing the Polkadot-API +Now, we need a way to: +- Connect to the blockchain +- Read data (like account balances) +- Send transactions (like transferring tokens) +- Handle user interactions with their wallet + +For this we'll use [`papi`](https://papi.how/) (Polkadot-API) — a Typescript API to interact with Polkadot chains. + +It is like a pre-built toolkit that handles all of this for you. Instead of writing all the complex blockchain communication code yourself, you can use papi to: +- Connect to Polkadot networks easily +- Handle wallet connections +- Format data correctly +- Manage transactions +- Deal with all the blockchain-specific stuff + +It's similar to how you might use `axios` for HTTP requests or `react-query` for data fetching - it's a tool that makes your life easier by handling the complex parts for you. + + +1. Install the polkadot-api (PAPI): +```bash +pnpm i polkadot-api +``` + +If everything is successful: + +```bash +batman → courses → pnpm i polkadot-api +Packages: +182 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Progress: resolved 225, reused 114, downloaded 68, added 182, done +node_modules/.pnpm/esbuild@0.25.5/node_modules/esbuild: Running postinstall script, done in 421ms + +dependencies: ++ polkadot-api 1.12.1 + +Done in 16.4s +``` + +### Step 5: Adding the chain spec +In frontend development with Polkadot, a chain specification is like a configuration file that tells your frontend app: + +1. Which blockchain network to connect to (Polkadot, Kusama, etc.) +2. How to format and display data (token decimals, symbols) +3. What features are available on that chain + +Think of it like a settings file that helps your frontend app "speak the right language" to the blockchain it's connecting to. Without it, your app wouldn't know how to properly interact with the specific blockchain network you're targeting. + +For example, if you're building a wallet app, the chain spec helps you know: + +- How many decimal places to show for token amounts +- What the native token symbol is (DOT, KSM, etc.) +- What features are available to users + +It's essentially the "translation guide" between your frontend and the blockchain. + +We can use the PAPI CLI (Command Line Interface) to download the chain spec ahead of time. This is used to generate all the necessary type descriptors, so you don’t have to manually figure out the structure of every interaction. + +It ensures that your app is in sync with the specific network you're developing for, especially if that chain undergoes runtime upgrades or type changes​. + +Using this chain spec, PAPI can automatically request the metadata from the chain you're connected to during runtime and generates codecs (serialization and deserialization tools) to communicate with the chain. + +To add a chain spec to our project, we can use the `papi add` command. If you run it with the `--help` flag you'll see something like this: +```bash +$ pnpm exec papi add --help + +Usage: polkadot-api add [options] + +Add a new chain spec to the list + +Arguments: + key Key identifier for the chain spec + +Options: + --config Source for the config file + -f, --file Source from metadata encoded file + -w, --wsUrl Source from websocket URL + -c, --chainSpec Source from chain spec file + -n, --name Source from a well-known chain (choices: "ksmcc3", "paseo", + "polkadot", "polkadot_collectives", "rococo_v2_2", "westend2", [...]") + --wasm Source from runtime wasm file + --no-persist Do not persist the metadata as a file + --skip-codegen Skip running codegen after adding + -h, --help display help for command +``` + +The `key` is the name we give to the chain (it can be any valid JS variable name). + +> **IMPORTANT:** Since `papi` uses the `key` as the name for importing the binary metadata in a Typescript file, it is important that we don't use special characters like `-` in the identifier as this will cause the build to fail. It is recommended to follow the **[camelCase](https://developer.mozilla.org/en-US/docs/Glossary/Camel_case)** standard for naming the key identifier. + +We'll be using the `westend` testnet to develop and test our app. We can change this to work on a production network like `polkadot` later. + +Now, let's download the latest metadata from the `westend2` testnet chain using the following command: + +```bash +# `papi add` is the command +# `wnd` is the name we're giving to this chain (can be any JS variable name) +# `-n westend2` specifies to download the metadata from the well-known chain westend2 + +pnpm exec papi add wnd -n westend2 +``` + +This will download the latest metadata for the chain and store it in the `.papi` directory. This folder contains: + +1. A **configuration file** called `polkadot-api.json`, which holds the setup information for the chain. +2. **A metadata file** named `${key}.scale`, which contains the chain's specific metadata. + +This structure ensures that all the necessary metadata for interacting with the chain is preloaded, organized and ready to use during development. + +If successful, you should see an output similar to: + +```bash +pnpm exec papi add wnd -n westend2 +✔ Metadata saved as .papi/metadata/wnd.scale +Saved new spec "wnd" +Reading metadata +Generating descriptors +CLI Building entry: .papi/descriptors/src/index.ts +CLI Using tsconfig: tsconfig.json +CLI tsup v8.5.0 +CLI Target: es2022 +CJS Build start +ESM Build start +ESM .papi/descriptors/dist/descriptors-ZCOXUYQ6.mjs 30.85 KB +ESM .papi/descriptors/dist/index.mjs 9.00 KB +ESM .papi/descriptors/dist/metadataTypes-7662PAAD.mjs 109.12 KB +ESM .papi/descriptors/dist/wnd_metadata-QGFZYVJE.mjs 611.97 KB +ESM ⚡️ Build success in 47ms +CJS .papi/descriptors/dist/index.js 768.67 KB +CJS ⚡️ Build success in 47ms +Compilation started +Compilation successful +pnpm install +Progress: resolved 1, reused 0, downloadedProgress: resolved 17, reused 17, downloadProgress: resolved 18, reused 18, download + +╭────────────────────────────────────────╮│ ││ Update available! 9.7.0 → 10.11.0. ││ Changelog: https://github.com/pnpm ││ /pnpm/releases/tag/v10.11.0 ││ Run "pnpm add -g pnpm" to update. ││ ││ Follow @pnpmjs for updates: ││ https://x.com/pnpmjs ││ │╰────────────────────────────────────────╯ + +Progress: resolved 18, reused 18, downloadProgress: resolved 127, reused 108, downloProgress: resolved 517, reused 455, downloProgress: resolved 582, reused 477, downloProgress: resolved 583, reused 477, downloPackages: +1 ++ +Progress: resolved 583, reused 477, downloProgress: resolved 590, reused 485, downloaded 0, added 1, done + +> dotpets@0.1.0 postinstall /Users/batman/Documents/Work/forks/Dot_Code_School/courses/dotpets +> papi + + +dependencies: ++ @polkadot-api/descriptors 0.1.0-autogenerated.2794767288648241745 + +Done in 3.1s +``` + +> **Sidenote:** Polkadot API comes with a handy bundle of chainspecs for both `well-known-chains` and `system-chains` to make your life easier. You can find the full list [here](https://github.com/polkadot-api/polkadot-api/tree/main/packages/known-chains). + +Since `.papi` files are auto-generated, they should be treated as build artifacts, so formatting them with Prettier is unnecessary and could potentially cause issues with the generated code's structure. + +So, before moving to the next step, let's update the `.prettierignore` file to include `.papi`. + +Your updated file should look something like this: + +```plaintext filename=".prettierignore" +.next +.papi +node_modules +public +pnpm-lock.yaml +``` + +### Step 6: Types generation with PAPI +Now, to utilize the benefits of typescript, we need to generate the relevant types for the chain we're working with using the metadata we just downloaded. Thankfully, `papi` makes it simple for us. + +This is similar to how you might use `prisma generate` to get types for your database, or how you'd need to generate types from an OpenAPI spec. The types help you write correct code and catch errors before they happen. + +To generate the types we need to run the following command in our terminal: + +```bash +pnpm exec papi +``` + +Now, given that there maybe runtime upgrades to the chain, or we might decide to work with other chains in the future, the metadata and types may change. This means we would need to update the types every time a change like that occurs. + +As you can imagine, it can get tedious to do this manually and we might forget to run the script after pulling new changes, leading to type mismatches between our code and the actual chain features, which could cause runtime errors that TypeScript wouldn't catch. + +So, to automate the types generation process, we'll add `papi` to the `postinstall` script in our `package.json` file like so: + +```json +{ + /* ... */ + "scripts": { + /* ... */ + "postinstall": "papi" + } +} +``` + +This script will automatically run after installation. + +Once you're done, your `package.json` should look something like this: + +```json +{ + "name": "dotpets", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "next lint", + "format": "prettier --write .", + "format:check": "prettier --check .", + "postinstall": "papi" + }, + "dependencies": { + "@polkadot-api/descriptors": "file:.papi/descriptors", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.511.0", + "next": "15.3.3", + "polkadot-api": "^1.12.2", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.3.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", + "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "15.3.3", + "prettier": "^3.5.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "tailwindcss": "^4", + "tw-animate-css": "^1.3.2", + "typescript": "^5" + } +} +``` + + +# Section 3: Authentication in Web3 +### Step 7: Creating a Wallet Provider +Now that our environment is ready, the first thing we want to do is authenticate the user. + +We’ll use this to: + +- Fetch their balance +- Track pet ownership + +But unlike Web2, Web3 authentication doesn’t require servers or centralized backends. + +There’s no need to store passwords, create user accounts, or manage sessions. + +Instead, we connect directly to the user’s wallet, and use [cryptographic signatures](https://youtu.be/s22eJ1eVLTU?si=O4cGjkwKFZAn8WVZ) to prove their identity. All of this happens client-side and there's no need for collection of any personal data. + +This approach stays true to Web3 values like: + +- Privacy: no emails or user data collected +- Authenticity: identity is verified by signing messages with their wallet +- Sovereignty: users are in control, not a platform + +We’ll be using PAPI (Polkadot API) to connect to the wallet. PAPI exposes the following functions from the `polkadot-api/pjs-signer` path that we can use for this: + +- `connectInjectedExtension`: Returns the list of installed wallet extensions typed as `Array`. +- `connectInjectedExtension`: Connects to a web3 wallet extension using its `name` as a parameter and returns a `promise` that resolves to an `InjectedExtension` interface for interacting with the extension. Its function signature looks like this: + + ```ts + (name: string, dappName?: string) => Promise +``` + +The `InjectedExtension` interface exposes some handy fields and methods like the extension's name and user accounts. We'll be using these soon. + +1. Let's start by creating `lib/wallet.ts` file with the following utility functions: + +```typescript filename="lib/wallet.ts" +'use client'; + +import { connectInjectedExtension, getInjectedExtensions } from 'polkadot-api/pjs-signer'; + +// Get the list of installed wallet extensions +export const getWalletExtensions = () => { + const extensions = getInjectedExtensions(); + return extensions; +}; + +// Connect to the specified wallet extension +export const connectWallet = async (extension: string) => { + return await connectInjectedExtension(extension); +}; +``` + +> Note that since the authentication happens client-side, we mark the `wallet.ts` as a client file using the `"use client"` directive. + +Separating wallet utilities into a file like this is useful if we need to add custom logic or error handling in the future. Doing this: +- Keeps wallet-related functions in one place +- Makes it easier for us to modify and reuse these functions + +2. Now, we need a way to access the wallet state in our app. + + Instead of passing wallet data through props (which gets messy), we'll create a `WalletProvider` using the [React Context API](https://react.dev/learn/passing-data-deeply-with-context) to make the wallet state available everywhere in our app. + + To do this, add the following code to the `providers/WalletProvider.tsx` file: + +```tsx filename="providers/WalletProvider.tsx" +'use client'; + +import { InjectedExtension, InjectedPolkadotAccount } from 'polkadot-api/pjs-signer'; + +import { createContext, useContext, useState } from 'react'; + +import { connectWallet } from '@/lib/wallet'; + +// Context for the wallet provider to store the wallet extension, connect function, and accounts +const WalletContext = createContext<{ + extension: InjectedExtension | null; + accounts: InjectedPolkadotAccount[]; + connect: (extension: string) => Promise; + disconnect: () => void; +}>({ + extension: null, + accounts: [], + connect: async () => {}, + disconnect: () => {}, +}); + +// Provider for the wallet context +export function WalletProvider({ children }: { children: React.ReactNode }) { + const [extension, setExtension] = useState(null); + const [accounts, setAccounts] = useState([]); + + const connect = async (extension: string) => { + const connected = await connectWallet(extension); + setExtension(connected); + setAccounts(connected.getAccounts()); + }; + + const disconnect = () => { + extension?.disconnect(); + setExtension(null); + setAccounts([]); + }; + + return ( + + {children} + + ); +} + +// Hook to use the wallet context +export const useWallet = () => useContext(WalletContext); + +``` + +This `WalletProvider` file creates a React context to share wallet state across the app. + +It manages two pieces of state: +- `extension`: The connected wallet +- `accounts`: The accounts by the user for our app to use + +It Provides two functions: +`connect`: Connects to a wallet and updates state +`disconnect`: Disconnects and clears state + +It makes all this available for us to use across our project through the `useWallet` hook. + +### Step 8: Using the Wallet Provider +Now, let's use the wallet provider we made in the last step to expose the wallet state and accounts to our web app. + +1. Let's import the `WalletProvider` component in our `app/layout.tsx` file like so: +```tsx +import { WalletProvider } from '@/providers/WalletProvider'; +``` + +2. Wrap the content inside the `WalletProvider`: +```tsx +{children} +``` + +3. While we're on this file, let's also update the `metadata` to describe our app: + +```tsx +export const metadata: Metadata = { + title: 'DotPets', + description: + 'A tamagotchi-style on-chain pet game built using Polkadot Asset Hub and Polkadot-API.', +}; +``` + +Once you're done, your file should look something like: + +```tsx filename="app/layout.tsx" +import type { Metadata } from 'next'; +import { Geist, Geist_Mono } from 'next/font/google'; + +import { WalletProvider } from '@/providers/WalletProvider'; + +import './globals.css'; + +const geistSans = Geist({ + variable: '--font-geist-sans', + subsets: ['latin'], +}); + +const geistMono = Geist_Mono({ + variable: '--font-geist-mono', + subsets: ['latin'], +}); + +export const metadata: Metadata = { + title: 'DotPets', + description: + 'A tamagotchi-style on-chain pet game built using Polkadot Asset Hub and Polkadot-API.', +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} + +``` + +Now, components in our app can easily access the wallet state and accounts. + +### Step 9: Connecting a wallet +In this step, we want to use the `useWallet` hook to connect to the user's wallet and fetch their accounts. +#### Prerequisites: +Make sure you have installed a web3 wallet that supports Polkadot in your browser. + +If you don't have one yet, I'd recommend installing the [Talisman Wallet](https://talisman.xyz/) browser extension. + +**Wallet Installation Instructions:** +- Follow the installation instructions on their website and click on the add account button. +- When prompted to **Select account type**, select *New Polkadot Account* — make sure you save your seed phrase somewhere safe if you intend to use it for actual transactions later. + + If you lose access to your seed phrase, you will lose access to whatever is owned by your wallet account forever. + + So either don't put anything of value on it, or keep it safe and ensure you have proper backups. + + Useful resources: + - [What are the best practices for storing crypto?](https://chat.openai.com/?q=What+are+the+best+practices+for+storing+crypto%3F) + - [How to securely backup my seed phrase?](https://chat.openai.com/?q=How+to+securely+backup+my+seed+phrase%3F). + +#### Starting template +Once you have your wallet setup with at least one Polkadot account, run the following command to download the relevant ui components for this step using `shadcn` +```sh +pnpm dlx shadcn@latest add alert button card +``` + +Next, open the `app/page.tsx` and replace the boilerplate code with this template: + +```tsx filename="app/page.tsx" +'use client'; + +import { AlertCircle } from 'lucide-react'; + +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; + +export default function Home() { + // TODO: Get the `extension` state and `connect`, `disconnect` wallet functions from `useWallet` hook + + // TODO: Add state variables for: + // - `availableExtensions` (string[]) + // - `accounts` (InjectedPolkadotAccount[]) + // - `error` (string | null) + + // TODO: Add `useEffect` to get available wallet extensions when component mounts + // Hint: Use `getWalletExtensions()` from `lib/wallet` + + // TODO: Add `useEffect` to subscribe to account changes when wallet is connected + // Hint: Use the `subscribe` method from the `InjectedExtension` interface + + return ( +
+ + + Wallet Connection + Connect your wallet to interact with the application + + + {/* TODO: Add conditional rendering to show error message if error exists */} + {false && ( + + + + {/* TODO: Display the error message here */} + Error message + + + )} + + {/* TODO: Add conditional rendering to show different UI based on whether a wallet is connected */} + {false ? ( +
+
+
+

Connected Wallet

+

+ {/* TODO: Display the connected wallet name */} + Wallet Name +

+
+ {/* TODO: Call the `disconnect` function when clicked */} + +
+ +
+

Connected Accounts

+
+ {/* TODO: Map through the `accounts` array to display each account address */} +
Account address will appear here
+
+
+
+ ) : ( +
+

Available Wallets

+
+ {/* TODOs: + - Map through `availableExtensions` to create connect buttons for each wallet + - Call the `connect` function when a wallet button is clicked + - Handle any errors during the connection process */} + +
+
+ )} +
+
+
+ ); +} + +``` + +The template has several `TODOs` for you to complete. Try doing this on your own and once you're done compare it against our solution. +#### Solution + +```tsx +'use client'; + +import { AlertCircle } from 'lucide-react'; +import { InjectedPolkadotAccount } from 'polkadot-api/pjs-signer'; + +import { useEffect, useState } from 'react'; + +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; + +import { getWalletExtensions } from '@/lib/wallet'; + +import { useWallet } from '@/providers/WalletProvider'; + +export default function Home() { + // Utility functions to connect, disconnect, and get the state of the wallet + const { extension, connect, disconnect } = useWallet(); + + // List of wallet extensions installed in the user's browser + const [availableExtensions, setAvailableExtensions] = useState([]); + // List of accounts authorized to connect to the application by the wallet + const [accounts, setAccounts] = useState([]); + // Error message to display to the user + const [error, setError] = useState(null); + + // Get the list of wallet extensions installed in the user's browser + useEffect(() => { + const extensions = getWalletExtensions(); + setAvailableExtensions(extensions); + }, []); + + // Subscribe to account changes when wallet is connected + useEffect(() => { + if (extension) { + const unsubscribe = extension.subscribe((accounts) => { + setAccounts(accounts); + }); + return () => unsubscribe(); + } + }, [extension]); + + return ( +
+ + + Wallet Connection + Connect your wallet to interact with the application + + + {error && ( + + + {error} + + )} + + {extension ? ( +
+
+
+

Connected Wallet

+

{extension.name}

+
+ +
+ +
+

Connected Accounts

+
+ {accounts.map((account) => ( +
+ {account.address} +
+ ))} +
+
+
+ ) : ( +
+

Available Wallets

+
+ {availableExtensions.map((extension) => ( + + ))} +
+
+ )} +
+
+
+ ); +} + +``` + + + +# Section 4: On-chain data and interaction +### Step 10: Fetching user balance by querying the blockchain +Now that the user is authenticated, let’s query the blockchain to fetch their DOT balance using PAPI. We can use this later to ensure they have enough to mint a pet NFT and enable interactions that cost tokens (feeding, evolving, etc.). + +To fetch the user’s balance from the blockchain, we first need a client to talk to it. + +1. Create a new file at lib/clients.ts and paste the following starting template. Follow the TODO comments to complete it yourself: +```ts filename="lib/clients.ts" +// This file sets up a typed connection to the Westend testnet using Smoldot and Polkadot-API. + +// TODO: Import the `wnd` chain descriptor from `@polkadot-api/descriptors` + +// TODO: Import `createClient` from `polkadot-api` + +// TODO: Import `chainSpec` for Westend2 from `polkadot-api/chains/westend2` + +// TODO: Import `getSmProvider` from `polkadot-api/sm-provider` + +// TODO: Import `start` from `polkadot-api/smoldot` + +// TODO: Start smoldot and add the Westend chain using `smoldot.addChain({ chainSpec })` + +// TODO: Create a client using `createClient(getSmProvider(wndChain))` + +// TODO: Get the typed API using `client.getTypedApi(wnd)` + +// TODO: Export both the client and the typed API +``` + +Once done, your file should look something like this: + +```ts filename="lib/clients.ts" +import { wnd } from '@polkadot-api/descriptors'; +import { createClient } from 'polkadot-api'; +import { chainSpec as wndChainSpec } from 'polkadot-api/chains/westend2'; +import { getSmProvider } from 'polkadot-api/sm-provider'; +import { start } from 'polkadot-api/smoldot'; + +// Start smoldot and setup its chains +const smoldot = start(); +const wndChain = smoldot.addChain({ chainSpec: wndChainSpec }); + +// Create the clients and their typedApis +console.info('Initializing clients...'); +const wndClient = createClient(getSmProvider(wndChain)); +const wndApi = wndClient.getTypedApi(wnd); + +console.info('Clients initialized'); + +export { wndClient, wndApi }; + +``` + +2. Now that we have a client connected to the chain, let’s build a custom React hook to fetch the user’s token balance and stay updated in real time. + + This hook should: + • Use the typed API from `wndApi` + • Subscribe to balance changes using `System.Account.watchValue(address)` + • Format the balance based on the chain’s token decimals + • Return the formatted balance, token info, loading state, and any errors + +Create a new file at `lib/hooks/useBalance.ts` and paste the following starter template. Similar to the last file, follow the TODO comments to complete the logic — you can uncomment and fill in the lines as you go. + +```tsx filename="lib/hooks/useBalance.ts" +// A custom React hook to fetch and subscribe to the user's token balance. + +import { useEffect, useState } from 'react'; + +// TODO: Import the `wndApi` from '@/lib/clients' +// import { wndApi } from '@/lib/clients'; + +// TODO: Import the chainSpec JSON string from 'polkadot-api/chains/westend2' +// import { chainSpec as wndChainSpec } from 'polkadot-api/chains/westend2'; + +interface TokenInfo { + symbol: string; + decimals: number; +} + +interface UseBalanceResult { + balance: string; + error: string | null; + tokenInfo: TokenInfo | null; + isLoading: boolean; +} + +interface UseBalanceOptions { + decimalPlaces?: number; +} + +export function useBalance(address: string, options: UseBalanceOptions = {}): UseBalanceResult { + const { decimalPlaces = 4 } = options; + const [balance, setBalance] = useState('Loading...'); + const [error, setError] = useState(null); + const [tokenInfo, setTokenInfo] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + let subscription: { unsubscribe: () => void } | null = null; + + const setupSubscription = async () => { + try { + setIsLoading(true); + + // TODO: Parse the chain spec and extract tokenDecimals and tokenSymbol + // const wndChainSpecJSON = JSON.parse(wndChainSpec); + // const decimals = ... + // const symbol = ... + // setTokenInfo({ symbol, decimals }); + + // TODO: Subscribe to System.Account for this address + // const observable = ... + // subscription = observable.subscribe({ + // next: (data) => { + // // Format and set the balance here + // }, + // error: (err) => { + // // Set error state here + // }, + // }); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to fetch balance'); + setBalance('Error'); + setIsLoading(false); + } + }; + + setupSubscription(); + + return () => { + if (subscription) { + subscription.unsubscribe(); + } + }; + }, [address, decimalPlaces]); + + return { balance, error, tokenInfo, isLoading }; +} +``` + +Once completed, your file should look like this: + +```tsx filename="lib/hooks/useBalance.ts" +import { chainSpec as wndChainSpec } from 'polkadot-api/chains/westend2'; + +import { useEffect, useState } from 'react'; + +import { wndApi } from '@/lib/clients'; + +interface TokenInfo { + symbol: string; + decimals: number; +} + +interface UseBalanceResult { + balance: string; + error: string | null; + tokenInfo: TokenInfo | null; + isLoading: boolean; +} + +interface UseBalanceOptions { + decimalPlaces?: number; +} + +export function useBalance(address: string, options: UseBalanceOptions = {}): UseBalanceResult { + const { decimalPlaces = 4 } = options; + const [balance, setBalance] = useState('Loading...'); + const [error, setError] = useState(null); + const [tokenInfo, setTokenInfo] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + let subscription: { unsubscribe: () => void } | null = null; + + const setupSubscription = async () => { + try { + setIsLoading(true); + // Get chain properties + const wndChainSpecJSON = JSON.parse(wndChainSpec); + const wndChainProps = wndChainSpecJSON.properties; + + const decimals = Number(wndChainProps.tokenDecimals); + const symbol = wndChainProps.tokenSymbol; + setTokenInfo({ symbol, decimals }); + + // Subscribe to balance changes + const observable = wndApi.query.System.Account.watchValue(address); + subscription = observable.subscribe({ + next: (data) => { + const balanceInPlanck = data.data.free; + const balanceInToken = Number(balanceInPlanck) / Math.pow(10, decimals); + setBalance(balanceInToken.toFixed(decimalPlaces)); + setIsLoading(false); + }, + error: (err) => { + setError(err instanceof Error ? err.message : 'Failed to fetch balance'); + setBalance('Error'); + setIsLoading(false); + }, + }); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to fetch balance'); + setBalance('Error'); + setIsLoading(false); + } + }; + + setupSubscription(); + + return () => { + if (subscription) { + subscription.unsubscribe(); + } + }; + }, [address, decimalPlaces]); + + return { balance, error, tokenInfo, isLoading }; +} + +``` + +3. To give users visual feedback while their balance is loading, we’ll use the skeleton component from shadcn/ui. + + Run the following command in your terminal to add it: + +```sh +pnpm dlx shadcn@latest add skeleton +``` + +4. We’ll now create a reusable `BalanceDisplay` component that shows the balance for a given address. + + Create a new file at `components/BalanceDisplay.tsx` and use the following template as a starting point. It includes TODOs to help guide your implementation. + +```tsx filename="components/BalanceDisplay.tsx" +'use client'; + +// TODO: Import the useBalance hook from your custom hook +// import { useBalance } from '@/lib/hooks/useBalance'; + +// TODO: Import the Skeleton component from shadcn/ui +// import { Skeleton } from './ui/skeleton'; + +interface BalanceDisplayProps { + address: string; + className?: string; + showAddress?: boolean; + decimalPlaces?: number; +} + +export function BalanceDisplay({ + address, + className = '', + showAddress = true, + decimalPlaces = 4, +}: BalanceDisplayProps) { + // TODO: Call the useBalance hook with the given address and decimalPlaces + // const { balance, error, tokenInfo, isLoading } = useBalance(address, { decimalPlaces }); + + // TODO: Handle error state + // if (error) { + // return
Error: {error}
; + // } + + return ( +
+

Account Balance

+ + {/* TODO: Show skeleton while loading, else show the formatted balance */} + {/* {isLoading ? ( + + ) : ( +

+ {balance} {tokenInfo?.symbol} +

+ )} */} + + {/* Optional: Show address if showAddress is true */} + {/* {showAddress &&

Address: {address}

} */} +
+ ); +} +``` + +Once done, you should have something similar to the following: + +```tsx filename="components/BalanceDisplay.tsx" +'use client'; + +import { useBalance } from '@/lib/hooks/useBalance'; + +import { Skeleton } from './ui/skeleton'; + +interface BalanceDisplayProps { + address: string; + className?: string; + showAddress?: boolean; + decimalPlaces?: number; +} + +export function BalanceDisplay({ + address, + className = '', + showAddress = true, + decimalPlaces = 4, +}: BalanceDisplayProps) { + const { balance, error, tokenInfo, isLoading } = useBalance(address, { decimalPlaces }); + + if (error) { + return
Error: {error}
; + } + + return ( +
+

Account Balance

+ {isLoading ? ( + + ) : ( +

+ {balance} {tokenInfo?.symbol} +

+ )} + {showAddress &&

Address: {address}

} +
+ ); +} + +``` + +5. Now that you’ve created a reusable `BalanceDisplay` component, let’s show each connected account’s balance on the home page. + + First import the `BalanceDisplay` component in your `app/page.tsx` file like so: +```tsx +import { BalanceDisplay } from '@/components/BalanceDisplay'; +``` + +Under each account’s address, render the balance by adding the `BalanceDisplay` component and passing in the account’s address: + +```tsx +// Inside the map block for accounts +
+
{account.address}
+ + {/* TODO: Display the balance for this address */} +
+``` + +After completion, you should have your `app/page.tsx` file looking like: + +```tsx filename="app/page.tsx" +'use client'; + +import { AlertCircle } from 'lucide-react'; +import { InjectedPolkadotAccount } from 'polkadot-api/pjs-signer'; + +import { useEffect, useState } from 'react'; + +import { BalanceDisplay } from '@/components/BalanceDisplay'; +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; + +import { getWalletExtensions } from '@/lib/wallet'; + +import { useWallet } from '@/providers/WalletProvider'; + +export default function Home() { + // Utility functions to connect, disconnect, and get the state of the wallet + const { extension, connect, disconnect } = useWallet(); + + // List of wallet extensions installed in the user's browser + const [availableExtensions, setAvailableExtensions] = useState([]); + // List of accounts authorized to connect to the application by the wallet + const [accounts, setAccounts] = useState([]); + // Error message to display to the user + const [error, setError] = useState(null); + + // Get the list of wallet extensions installed in the user's browser + useEffect(() => { + const extensions = getWalletExtensions(); + setAvailableExtensions(extensions); + }, []); + + // Subscribe to account changes when wallet is connected + useEffect(() => { + if (extension) { + const unsubscribe = extension.subscribe((accounts) => { + setAccounts(accounts); + }); + return () => unsubscribe(); + } + }, [extension]); + + return ( +
+ + + Wallet Connection + Connect your wallet to interact with the application + + + {error && ( + + + {error} + + )} + + {extension ? ( +
+
+
+

Connected Wallet

+

{extension.name}

+
+ +
+ +
+

Connected Accounts

+
+ {accounts.map((account) => ( +
+
{account.address}
+ +
+ ))} +
+
+
+ ) : ( +
+

Available Wallets

+
+ {availableExtensions.map((extension) => ( + + ))} +
+
+ )} +
+
+
+ ); +} + +``` + +Once this is done, you should see the account’s live on-chain balance load automatically after wallet connection. + + + + +### Step 11: Creating an NFT collection + +### Getting test tokens +Once you've installed a wallet and created an account, you'll need some testnet tokens interact with Westend. + +Use the [Westend Faucet](https://faucet.polkadot.io/westend) to request WND (Westend’s native token). These are essential for paying transaction fees during development. + +> ⚠️ If you’re planning to go live on Polkadot mainnet later, you’ll need to acquire real DOT tokens via Talisman or a cryptocurrency exchange. But for now, WND is all you need for testing. + +### Creating Your Collection +With tokens ready, let’s deploy your first NFT collection: + +create collection `uniques.create(collection, admin)` +- collection: u32 (CollectionId) +- admin: MultiAddress (AccountIdLookupOf) + +Set the metadata for your collection. `uniques.setCollectionMetadata(collection, data, isFrozen)` +- collection: u32 (CollectionId) +- data: Bytes + - upload to ipfs using https://wiki.polkadot.network/learn/learn-nft-pallets/#using-apillon +- isFrozen: bool + +### What is IPFS? + +**IPFS (InterPlanetary File System)** is a decentralized protocol for storing and accessing files using **content-based addressing**. + +Instead of accessing files by **where** they are (like a URL), IPFS accesses files by **what they are** (their cryptographic hash). + +Example: +``` +ipfs://QmX... → This is a hash of the file content. +``` + +### How IPFS Actually Works +- Files are immutable (changing the content = new CID) +- Anyone can fetch a file from anyone else, peer-to-peer +- Fast, redundant, and censorship-resistant in theory + +> **⚠️ But, IPFS does not guarantee persistence** + +When you upload to IPFS (via Apillon, web3.storage, Pinata, etc.), you’re pinning it to your node or the service’s infrastructure. + +If nobody pins the file and the uploader deletes it (or stops hosting), it can disappear from the network. + +So, you can remove the data whenever you want, unless someone else is also pinning it. + +This is a problem for NFTs because: An NFT that points to `ipfs://Qm123...` is useless if that CID becomes unreachable. diff --git a/content/courses/dotpets/sections/wip-section/wip-section.mdx b/content/courses/dotpets/sections/wip-section/wip-section.mdx new file mode 100644 index 0000000..daeabfa --- /dev/null +++ b/content/courses/dotpets/sections/wip-section/wip-section.mdx @@ -0,0 +1,8 @@ +--- +slug: wip-section +title: WIP — DotPets — Web3 Frontend Fundamentals +order: 1 +description: WIP — DotPets — Web3 Frontend Fundamentals +--- + +> **TODO:** Add section description. \ No newline at end of file diff --git a/public/static/images/content/courses/dotpets/block1.png b/public/static/images/content/courses/dotpets/block1.png new file mode 100644 index 0000000000000000000000000000000000000000..1427efe25184183df60a39bffadbe558c3548a92 GIT binary patch literal 7542 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 literal 0 HcmV?d00001 diff --git a/public/static/images/content/courses/dotpets/blockchain.png b/public/static/images/content/courses/dotpets/blockchain.png new file mode 100644 index 0000000000000000000000000000000000000000..dfab8e3afc25c972ab6d325178d8cd0896c316a9 GIT binary patch literal 14358 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 OAo5RDq(4d;hx|XnOL+SL literal 0 HcmV?d00001 diff --git a/public/static/images/content/courses/dotpets/genesis.png b/public/static/images/content/courses/dotpets/genesis.png new file mode 100644 index 0000000000000000000000000000000000000000..2031ecab3a55eb5062ab85937782e6103a35966d GIT binary patch literal 5873 zcmYkA2UHVF-^Q_lKmaejmrxZD2pA~>7CMpMq9`??g^q|)r1u&G5{gJCf(V2vO?nHx zS3vpbS=j_hT%-R2xGxK|%*(g07bs8#mDl#%M8chuq10YQT?v$HX zf#;NHf;Eub@lrMOvT=2LgF+y^$kY)o2oEbSge|Z28(w=aFE>wl2?;lpm5bLaXVhIA zS7-0RJ{~f%E8Gr7W?uhSPId)|v49psKgonV*l z^O|TeDp}h-g1tP`Q4wC%6*q|Rz{EfEa361cd7Hv!i6Zc`p1J!Y-^Sk7r$5rKx`#P4 zz--3TgH!ay8myye^X>LVE*I@LE4O_^DHW{(TaT1BR2`YE}dHN+7kFq)61{AEk(3Nt`k!e6Ng^L{sU7B z-l|{6g%p&YnAWEa!u&_EI9++^LruFvrIau%A1d{O)(5p%pQFVlZ9n1k90){I?CYl@ z`a(8oB^oNKa$aZ_c7oySR)yDW@U$1wL^r=dEb^%x@=&Fr-{9W@)NA1d;Y{fzu5oGq$HOGvy+>t zHy0ka3PLl(IqkeS!^)y|kF)c&KQ?iG|GyU-0AClPCag<_20`d502rI)tI%&xq z@IAND+Fawff7xjw;*{WZdn)6m(u02$?4eiM>xhdrzrX=4^oC#TQ_ zE5ng3O7%W_4vO)f(pUOcOQ+hqEstOG-;?g@O#DJ^43A`aER9hLUJ@3;~V=ET<4C>%z4;QG$0mQl?@Nn*!f3&CR`5F)3LK4q%zN z^pS7v?8MUEHZQUb`L|P+;rv%Q*4(_L>Z~!9hn9XeCUjJ%7+dn|e#2j@>C!_(>%H1S zkA~YG|C9;b$oVaY7d16(Y*KW{(Eb3j!k_#R*GaVs$I=j77Pa`5E6{nn8f`-*QwDle z90aI<6_cEYOxdtcTYu`M^30b0;%&@Av!|JDf&)b!TL}wNn6&;L3(Sn=WW6VcEbo5H zhiIvwM^C068_g-e?bnp$dAnCP zI^tiEk;ac7)~K@Xj9wRma>+O5{qF2sQodBA^EE24%&v2NvAgIhr=Vc9JzshFnkV5! zge}c<$6%a>v|T_jW#VTFC*uMw(s*Fi=6XezJyV7*gHDcB`zdQW9Z!~wxHxnsmW_VR z-^Ut7%XzDfcp4XCONQMM?1!~}5D+`;=SM2Y8iA8P;aa-c%A;&ZwLSHi#9k;aBDP3j zriJI?JnUjc*n#Pf2h$Hmw;@TF`CG91qj&OyDa;wDUeJ-qIzLRdW1yYLQ(+CY3LkIs z?FQOzGv-tMy;aW5NQH?aj#&J@8tFcpvrQtAR?Pl0W29c;yu^eF+GfQ5+TuZY=y*tb zwZjq zr3H@l-~I7SreeDD4e^Z_x?#O7f9-bL#^KgflcTX6Yu#6qZb3~y`@f{&zLv#syjlqP z;qblb$kVe2mHY@Hh$RDNhAqr{^2=_xU>q&&GrFB=H@c-YlM)kg)8Fkq{N!d6OH#SU zZuj*rn=iJgEgpp743&c$v|X=hp;3fb0T@5lj=^(>OIo~bA`Vx$vfqqTynF66WhjLq zn;vf#AQ#lFbFrnM@e@40P2|dv!mck3~Hu)^~4 zawE>M;2x60=8wxMT~ULaosG4%kKu%t69Jvv@^mQj7Y1P~ASf)nU-&6y5`#cw&2qIw z+c5LA2#Siv+&BJQ)g`8US=1wyd6aS%~!aQ2kU+B%Cv8e0~J>n35G zkNw2Y#O=BEhz{5pl9x2pAcuVx?M?5H3^&;0rayrV9Y6X{U4NgvCODft=HI%2KmPP5 zvC+>83+#oHpjalR3oVxsP`IjJ)ML&enoG$&pC>Q!9guwNzJ3@j zJOP}?yt+6vZdR47fhTx(yPkWymUiW4siY%PKO`~I)8|(JA(7bC6?4+jZq9!)OpGhO zzAc6Sn_*Jqf}%vSizpp1@Ejqo3-Dj~#>U3s;o%$9%zmGdH?Cj*4gWNHezK1Uq2D98 zg)KJwKR2jf3j7Us9IJ7jgSsvfMw0Bvd(IcXq6A{0@$rMDjZPzAB^mtyECPuvWKBs= ze|vhc5kbc@nj1#VQf6L{t`N^!BVh4>qA5)kcPH=&3kj7ytEQr+v_SIXqGl*~{Pb`J z1!GIHH}_hk3Oz8ix9{wieH&P@|P{=V)gkxwH!u0113i=XPaoV`C#eKK{GkK8@?a zXn_e*@A2c{tgMCJWMM%DWKvR6Icl--B=RqQoh*6P{Twa@?}Lr8?(XhipKBMNRoYVa z+G1bSdmsQc-kSW}?%kg%KI3?Hv1vxpZ zu$Y*bt+`s)&(Eq|=Ib6sgTY`G|EOs8A7UTeXUlc?k;9PdI!`b|Ueu}7R*WC{C z^m|UJ4Gjtx4x+eNwv%aTePFmtv5DY5P&_3P|7L$J$?qIBU2dhPmuPFA={Q*`=eb7s zb$G$o25KfJYfl!!*70=eucIlKg_umQ{Tl{8SK}-lr=_i(A!+q^d$xKgOF>wQAjy!M zm%u6a_=sKct=H~iQ-%BSZ!5-S3Gv*k(iRrqKN**xZzqW;C~%NCps0^>IXO9lgM$Y} zpYtI|;#+bST3TB-xAG221+Vp6^6am#juU?-DDTWxi$a%5^CF)wMt&=`>5g9tdXs|8 z4Oj^c3meIF7%P0^<1?IHgO0{pHMN?nPxAGFLh>GmQB_n_jF)=;8vHF;;l95%5X~f7 z$sZL>i2Lq;^rG5vVr?)>d*8ioxjh1pd=d`IQFazgk#ZU<9JrlVj*jEFPYWu)sVQ;F z`y_%ktQ(V(61Kg*ZqEzT(gLfxJ%6C6n82-ghb>LM@=M1tZ+VA@tpBMOnojw~pNl^i zXBADawoEu(fC-o$wizTBzx-ryH^||VY2MSS@qrL)JJIrmR&z55&Qs~g|o1y0IIVAL?;Vk#o?8< zozYBwWpQ4>u8LuiPZ z&ja+>lUCFSPQ^oFW`1@j{2IzmpsoRW#JVen@90pW-*Nojtay4;JTW%e?&9>Ysj-oq zBaH2#twXcz5U09TUSZ*EjWb8tr~8XOHcQ`vDCoHJPx$!woF+@*&3-2tuFW&`p1*o} zG?2o}FV*8Y*`O%17-sR=YNz{-<07M=1J;EXlMicFO9|HD@G{4VPrN~Dc@luB)5eOM zm6OHIHTk|qp->UDT=K6rLt(ICU`w`bI7{A9P)U+T zl>;77=9xEm(=-JJ{Cb*A{bJ+CkKp84yxkCh1}W#!2=(*x^OtW{nP5)Eo+RQ7lc-5( z+}_Kh-S1xviv~j}8Av+|4gP1Oj~{t=DwL9f9Qx%_ve-;KOifKs>#jR~dD--pIIkfu z%FqAgj*E+}xZHA|z2GhXQ!TiIgF`VV3&lX|tXdg&oq*Z4(^Og98+2+sr<}+7aE>hp z!HxIy*57lkEl+v&>9ej$whcfoWGIRrVXcz3 zCQ7EtUNj6F0?ehQrOkjkqgOCdVscg_j94Nu?2t?6wph6B}4KxuH6kPTi_V;A% zRk8==jEx+k|33LEtZ8SlsR1=p8E|oGTw*fN-X8LRrb~&O&q=SeZxEEs*QH`^&N&d| z`3PgR+JViKbq`*#xu#4>S>-dDuj$2dLt6*)qnldgwSXS>5yxgSCwuPiO}turtG0;I#O!m#C97pAhOCK4;K zxJ8`7E4rg_D{%vv z+oV^Nk-@PU(H>>9EHW?p032eCV3zLn!L`u<;sCO+^jqZ8t}3nV!>y#I(#wJGvdhk! z|COqEAVl7pr=Cy;z7a(NC%hX;djK;o4Z;x+gJx+|rD{b`KS2UN+OWjbGzK|(@ezG>trk9U4(S!b|YWO`{Z_K#Dc0L>)! zA_r2%Cne<$tl||57fw82Cq{YoRaCBnnlJzO?lH8-KW_86s?V-3su?2w4F;tbiMH)i zJ9%FMQLlW#>&W47?d|m^*Hz6qY?TcjA^KvOPOb-wcujqL6v8HrOmv3Go6lU#&FAOqJ-IkJCBrq6*7=!?`Uo05LVSEd105bW zpnws^2yc86nzPhdgCxgY_sC6xg^5^DmOzyEdZXehb7{D_xmU7l^einu*4EbMA16`W zxq+-RkaBDA+Gq=S9icd+mw5lj%_FvT$r(QQ8J$>@|wqi~3Yq zr{bI(>s(%2D?A5~UwwbQJuf%G=wl5i?;Ek?OLH6fE0S6~=RX9E3Sxa|rl6^BZ!aRm z8rw!BqRiQ3Mb1_+)(9pfniq|`1q`9@2iiHq7S)cCvUyg6f&*tGkeHayxF>^u{?!tQ zyI`^XIE!!()5x5oY)LUy#KXdp64CP&1ApdGF=QXTDy09`Djw((e;ZdM@uy6|g+^HL z(yGn)2Zh&VMoGqCQOFoV@V^#!-#t8m03*$K^!k{lq0#7!jDBRQ9)dOj{)Ctj(%G!q zgEN=@sWdIZb}8s8>_eGn=3dKC!*nK7K}_zX8pY12L2a1n=_}tJZmN1*5jJ4t=8iuf z$x}~;jlJHgaarh7YL;LN`RhP=y^o+`C8>Fy+bsk?ziR@6H`iAIH< z{2b&AsvGB}47rBIHJOlP8rdYU`9_t-^1@d{e`E7oAyfcJ4C zAff2d6S%NSk)E?0LWsi+tV#_2^4n!$d#<*`2p3$i12`Ov2-6fT1z|;oR(#Bk2?u?AQNytY1einp%%o@wYQDC@kZc;!q za@#1TOE&`=$9!^nno5n#4P5%|PY-U>sRd!nJVgJ?>jAM&c>?gZCp2~?{J_6wGEG$-m9oc{ G!T$r+>2gQ_ literal 0 HcmV?d00001 diff --git a/public/static/images/content/courses/dotpets/linked-list.png b/public/static/images/content/courses/dotpets/linked-list.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9db0519017cd872a2cc5a6d584b37a4934f5df GIT binary patch literal 186429 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 =y3?;>!pY~IZq%Q{9Z?0L!`g^hQ5<52i=VlDr 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 literal 0 HcmV?d00001 diff --git a/public/static/images/content/courses/dotpets/tampering.png b/public/static/images/content/courses/dotpets/tampering.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7cdf3d2fdd2bbe71e75159aad7036645abfe26 GIT binary patch literal 25318 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 literal 0 HcmV?d00001 From 6e92f5e28ab1b7d4148d2171a007c42aebe89121 Mon Sep 17 00:00:00 2001 From: iammasterbrucewayne Date: Wed, 9 Jul 2025 10:22:37 +0530 Subject: [PATCH 2/2] fix: add useEffect for real-time repository updates --- .../[course]/(pages)/setup/hooks/index.tsx | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/app/courses/[course]/(pages)/setup/hooks/index.tsx b/app/courses/[course]/(pages)/setup/hooks/index.tsx index 13c7df1..6ce976b 100644 --- a/app/courses/[course]/(pages)/setup/hooks/index.tsx +++ b/app/courses/[course]/(pages)/setup/hooks/index.tsx @@ -26,6 +26,7 @@ const useRepositorySetup = ( initialRepo?._id?.toString() ?? null, ); + // Effect for initial setup and repo data fetching useEffect(() => { if (initialRepo) { setShowRepositorySetup(true); @@ -82,7 +83,35 @@ cd dotcodeschool-${courseSlug} repositorySetup, ]); - // Rest of your component... + // Effect for real-time repository updates + useEffect(() => { + if (!repoId) return; + + const eventSource = new EventSource("/api/repository-updates"); + + eventSource.onmessage = (event) => { + try { + const data = JSON.parse(event.data); + // Check if the update is for our repository + if (data.documentKey?._id === repoId) { + // If there's an update to test_ok field, update our state + if (data.updateDescription?.updatedFields?.test_ok !== undefined) { + setGitPushReceived(data.updateDescription.updatedFields.test_ok); + } + } + } catch (error) { + console.error("Error processing repository update:", error); + } + }; + + eventSource.onerror = (error) => { + console.error("EventSource failed:", error); + }; + + return () => { + eventSource.close(); + }; + }, [repoId]); return { showRepositorySetup,