# ๐Ÿงฑ RWA Tokenization Template (Algorand) A beginner-friendly, end-to-end template for tokenizing real-world assets (RWAs) on Algorand testnet using Algorand Standard Assets (ASAs). **This repository is designed for:** - Founders exploring RWA proofs-of-concept - Builders new to Algorand - Hackathons, demos, workshops, and early product experiments No prior blockchain or smart contract experience required. By the end, you'll have a working tokenized asset with a real Algorand Asset ID. --- ## โœจ What This Template Gives You - โœ… Full-stack Algorand project (frontend + backend server - no smart contract logic used) - โœ… Simple ASA creation and transferring flow for assets - โœ… Web2 & Web3-style logins - โœ… TestNet-ready setup - โœ… One-command setup using GitHub Codespaces - โœ… Hosting capability with Vercel + Analytics enabled --- ## ๐Ÿง  What "RWA Tokenization" Means Here This template focuses on the **on-chain token layer** of RWA tokenization: - Each real-world asset is represented by an **Algorand Standard Asset (ASA)** - Ownership, supply, and transfers are handled on-chain - The real-world linkage (documents, custody, legal structure) lives off-chain > โš ๏ธ This is a technical proof-of-concept template, not legal or financial advice. --- ## ๐Ÿš€ Getting Started (5 Minutes) ### Option 1: GitHub Codespaces (Recommended) This is the fastest and easiest way to run the project. #### 1๏ธโƒฃ Fork the repository Click **Fork** (top-right of this page) to create your own copy. https://github.com/user-attachments/assets/92e746e1-3143-4769-8a5a-1339e4bd7a14 #### 2๏ธโƒฃ Open in Codespaces 1. Go to your forked repository 2. Click **Code โ†’ Codespaces โ†’ Create codespace** 3. Wait for the environment to load and enter the workspace > When the Codespace loads, you may see an **"Open Workspace?"** popup in the bottom-right โ€” click **Yes**. Or manually enter it like below: Codespace workspace setup #### 3๏ธโƒฃ Run the setup script In the Codespaces terminal, run: ```bash bash setup.sh ``` This script will: - Install dependencies - Automatically create required environment files - Launch the frontend automatically ๐Ÿ‘‰ When it finishes, a web app link will open automatically in Codespaces. > โš ๏ธ You do not need to manually create `.env` files for the frontend. --- ## ๐Ÿ” Required Frontend Configuration (Web3Auth) To enable email / social (Web2-style) login, you must configure Web3Auth. ### Steps 1. Go to the [Web3Auth Dashboard](https://dashboard.web3auth.io/) 2. Create a new project 3. Copy your **Client ID** ### Where to paste it Open the file: ``` frontend/.env ``` Add (or update) the following value: ```env VITE_WEB3AUTH_CLIENT_ID=YOUR_CLIENT_ID_HERE ``` Save the file and restart the frontend if it's already running. > ๐Ÿ”‘ **This is the only required manual environment step.** --- ## ๐Ÿ–ผ Optional: NFT Minting (IPFS / Pinata) NFT minting and metadata uploads are handled by a small backend server. > โš ๏ธ **ONLY required if you want NFT / metadata minting** > If you're just creating and transferring ASAs, you can skip this section. ### Backend path ``` projects/TokenizeRWATemplate-contracts/NFT_mint_server ``` ### Steps 1. Go to https://app.pinata.cloud/developers/api-keys 2. Create a new API key 3. Copy the **JWT token** ### Where to paste it Open: ``` projects/TokenizeRWATemplate-contracts/NFT_mint_server/.env ``` Add: ```env PINATA_JWT=YOUR_PINATA_JWT_HERE ``` Save the file. --- ## ๐ŸŒ Running the Frontend Again After running `setup.sh` once, you have two options whenever you open your Codespace if you don't want to run the setup script again: ### Option A: Terminal ```bash cd frontend npm run dev ``` ### Option B: GitHub UI You can also start the frontend directly using the GitHub Codespaces UI, which is useful for demos and workshops. ## Pro Tip! GitHub Codespaces is included with free accounts but comes with a monthly limit of 60 hours. To avoid losing your progress, be sure to **commit AND sync your changes regularly** โ€” just like shown in the video demo below โ€” so your updates are saved to your forked repository. https://github.com/user-attachments/assets/dd452ea1-3070-4718-af34-bea978e208ab --- ## ๐Ÿง  Final Note (Important for Learners) - โœ… Frontend setup is fully automated - โœ… Web3Auth Client ID is **required** - โœ… Pinata is **optional** **If something isn't working, it's almost always because of:** - A missing Web3Auth Client ID - No TestNet ALGO or USDC --- ## ๐Ÿช™ Tokenization Flow (High Level) This template guides you through the core steps of tokenizing a real-world asset on Algorand using Algorand Standard Assets (ASAs). ### Basic Flow 1. **Connect with Algorand** Use Pera, Defly, Lute, or Web3Auth to interact with the app. 2. **Define your asset parameters** Choose the asset name, unit name, total supply, decimals, and optional metadata. 3. **Create an Algorand Standard Asset (ASA)** The asset is created on-chain and represents your real-world asset digitally. 4. **Receive an Asset ID** Algorand assigns a unique Asset ID, which becomes the on-chain identifier for your tokenized asset. 5. **Use or extend the token as your RWA representation** The ASA can now be transferred, held, integrated into apps, or extended with additional logic. ### Advanced Asset Controls (Optional) ASAs support advanced management features commonly used in RWA and compliance-focused setups: | Role | Description | |------|-------------| | **Manager** | Can modify asset configuration | | **Reserve** | Holds non-circulating supply | | **Freeze** | Can freeze/unfreeze accounts | | **Clawback** | Can revoke assets from accounts | These controls are optional and depend on your use case and trust model. --- ## ๐Ÿงช Disclaimer > This repository is provided for **educational and experimental purposes only**. > It does not constitute legal, financial, or investment advice. --- ## ๐Ÿ“น Video Guides Below are videos on: - How to connect to TestNet on [Pera](https://perawallet.app/) - How to use the [Algo Dispenser](https://bank.testnet.algorand.network/) - How to use the [USDC Dispenser](https://faucet.circle.com/) ### How to connect to TestNet on Pera Wallet https://github.com/user-attachments/assets/31df8135-119e-4529-9539-4943de979719 ### How to use the Algo Dispenser https://github.com/user-attachments/assets/643cae10-4673-4b68-8e95-4a3f16fbba60 ### How to use the USDC Dispenser https://github.com/user-attachments/assets/a76e90fa-97f4-44f8-a7e8-a8ccabd24398