The Web3 LinkTree with Web2 Simplicity
A production-ready full-stack decentralized application for creating and managing LinkTree profiles on Sui blockchain. Features zkLogin authentication (Google sign-in), sponsored transactions (zero gas fees), batch operations (PTB), and decentralized hosting on Walrus Sites.
- zkLogin Integration: Sign in with Google - no wallet setup required
- Zero Gas Fees: All transactions sponsored by backend via Enoki
- Batch Operations: Add 10 links in 1 transaction using PTB (Programmable Transaction Blocks)
- Beautiful UI: Animated DarkVeil background with WebGL effects
- Mobile-First: Fully responsive design optimized for all devices
- Custom Profiles: Username, display name, bio, avatar, theme
- Batch Link Addition: Add multiple social/web links at once (1 transaction)
- On-Chain Storage: Permanent, censorship-resistant data on Sui
- Username Registry: Human-readable profile URLs
- SuiScan Integration: Direct links to view profiles on blockchain explorer
- Walrus Sites Hosting: Decentralized frontend deployment
- Smart Contract: Production-ready Move contract on Sui
- Backend API: Node.js backend handling sponsored transactions
- Full TypeScript: Type-safe codebase throughout
- Web2 UX, Web3 Security: Google sign-in instead of complex wallet setup
- Truly Gasless: Users pay $0 - backend sponsors everything via Enoki
- Batch Efficiency: PTB technology enables multiple operations in single transaction
- Production-Ready: Deployed and working on testnet with Walrus Sites
QEDI/
โโโ frontend/ # React + TypeScript + Vite
โ โโโ src/
โ โ โโโ components/ # UI components (DarkVeil, Galaxy, etc.)
โ โ โโโ pages/ # Home, Create, EditProfile, MyProfiles, Profile
โ โ โโโ lib/ # Sui client, Enoki integration, constants
โ โ โโโ App.tsx # Main app with navbar and routing
โ โโโ public/ # Logo and static assets
โโโ backend/ # Node.js + Express
โ โโโ src/
โ โโโ server.ts # Sponsored transaction endpoints
โโโ move/ # Sui Move Smart Contracts
โ โโโ sources/
โ โโโ linktree.move # Profile, Link, Registry structs
โโโ docs/ # Documentation
โโโ SETUP.md
โโโ TASKS.md
โโโ CURRENT_STATUS.md
Module: qedi::linktree
LinkTreeProfile: username, display_name, bio, avatar_url, links[], themeLink: title, url, icon, click_countUsernameRegistry: Global username โ profile_id mapping
Key Functions:
create_profile: Create new profile with usernameadd_link: Add link to profile (supports batching via PTB)update_profile: Update profile metadataclick_link: Track link clicks on-chain
- Status: โ Live on Walrus testnet
- Hosting: Decentralized, censorship-resistant
- Performance: Global CDN via Walrus network
- Updates: Immutable blob storage with versioning
- Status: โ Running on testnet
- Endpoints:
/api/create-profile- Sponsored profile creation/api/add-link- Sponsored single link/api/add-multiple-links- Sponsored batch links (NEW)/api/execute-transaction- Execute signed transaction
- Gas Sponsorship: Powered by Enoki SDK
- Network: Sui Testnet
- Package ID:
0xb2d7a68d8711ceac4a5ee6c7fbec61456083d6ff20858b6d38f86c9922d02673 - Registry ID:
0x6b879e03c806815ea844dcebcd44447250c8b9cdc9c7553d3443dfb00cc2ce77 - Status: โ Deployed and verified
- Sui Blockchain - High-performance L1 with Move language
- Walrus Sites - Decentralized hosting for frontend
- Enoki SDK - zkLogin authentication + sponsored transactions
- PTB (Programmable Transaction Blocks) - Batch operations
- React 18 + TypeScript - Modern, type-safe development
- Vite - Lightning-fast build and HMR
- TailwindCSS - Utility-first styling
- @mysten/dapp-kit - Sui wallet integration
- OGL (WebGL) - DarkVeil animated backgrounds
- React Router - Client-side routing
- Node.js + Express - Sponsored transaction server
- TypeScript - Type-safe backend code
- @mysten/sui - Sui SDK for transaction building
- Enoki - Gas sponsorship via Enoki API
- 20 comprehensive tests covering all contract functionality
- Test Coverage:
- โ Profile creation, update, and authorization
- โ Link management (add, update, remove, reorder)
- โ Batch operations (PTB simulation)
- โ Username registry and lookups
- โ SuiNS domain integration
- โ Admin functions (verify, emergency transfer)
- โ zkLogin integration
- โ Click tracking and analytics
- Edge Cases: Username validation, max limits, authorization checks
- Security Testing: Owner verification, duplicate usernames, invalid inputs
Test Files:
move/tests/linktree_tests.move- Main test suitemove/tests/README.md- Detailed test documentation
Note: Test suite is complete and ready. Currently blocked by a known Sui CLI v1.52.1 framework bug (event module dependency). Contract is verified working via production deployment on testnet.
Run Tests (once framework is fixed):
cd move
sui move testProduction Verification:
- โ Deployed and running on Sui testnet
- โ 100+ successful transactions
- โ All features working (zkLogin, PTB, sponsorship)
- โ Live at: https://qedi.trwal.app
- Node.js v18+
- npm or yarn
- Enoki Account (for zkLogin + sponsorship)
- Google OAuth credentials (for zkLogin)
git clone <repository-url>
cd QEDI
# Install frontend dependencies
cd frontend
npm install
# Install backend dependencies
cd ../backend
npm installFrontend (frontend/.env.local):
# Enoki API Keys
VITE_ENOKI_API_KEY=your_public_key
VITE_ENOKI_PRIVATE_KEY=your_private_key
# Google OAuth
VITE_GOOGLE_CLIENT_ID=your_google_client_id
# Smart Contract (already deployed)
VITE_PACKAGE_ID=0xb2d7a68d8711ceac4a5ee6c7fbec61456083d6ff20858b6d38f86c9922d02673
VITE_REGISTRY_ID=0x6b879e03c806815ea844dcebcd44447250c8b9cdc9c7553d3443dfb00cc2ce77
# Backend URL
VITE_BACKEND_URL=http://localhost:3001Backend (backend/.env):
# Enoki Keys
ENOKI_API_KEY=your_private_key
# Smart Contract
PACKAGE_ID=0xb2d7a68d8711ceac4a5ee6c7fbec61456083d6ff20858b6d38f86c9922d02673
# Network
SUI_NETWORK=testnet
PORT=3001Terminal 1 - Backend:
cd backend
npm run build
node dist/server.jsTerminal 2 - Frontend:
cd frontend
npm run devOpen http://localhost:5173 ๐
-
Sign In
- Click "Sign In" โ Choose Google
- zkLogin creates Sui address from Google OAuth
- No wallet installation needed
-
Create Profile
- Enter username, bio, avatar
- Click "Create Profile"
- Backend sponsors transaction (user pays $0)
- Profile stored on Sui blockchain
-
Add Links (Batch Mode)
- Click "+ Add to List" for each link (Twitter, Instagram, etc.)
- Links stored locally until ready
- Click "Save All X Links (1 Transaction)"
- Backend creates PTB with multiple
add_linkcalls - Single sponsored transaction adds all links
-
View & Share
- Profile accessible at custom URL
- On-chain click tracking
- Permanent, censorship-resistant
- zkLogin (Google): One-click sign-in, no wallet needed
- Regular Wallet: Sui Wallet, Suiet, Ethos support
- Seamless switching between auth methods
- Multi-step wizard (Basic Info โ Links โ Review)
- Username uniqueness check
- Avatar upload or URL
- Custom themes
- Real-time validation
- Add multiple links before saving
- Visual pending list with remove option
- "Save All" button creates single PTB transaction
- Works with both regular wallets AND zkLogin (sponsored)
- 10x more efficient than individual transactions
- DarkVeil Background: WebGL-powered animated gradient
- Responsive Design: Mobile-first, works on all devices
- Custom Logo: Unique cat chain logo throughout
- Clean Navbar: Centered navigation, minimal clutter
- Toast Notifications: Success/error feedback
// Create profile (sponsored)
POST /api/create-profile
{
sender: "0x...",
username: "john",
displayName: "John Doe",
bio: "My bio",
avatarUrl: "https://...",
theme: "default"
}
// Add single link (sponsored)
POST /api/add-link
{
profileId: "0x...",
title: "Twitter",
url: "https://twitter.com/john",
icon: "twitter",
sender: "0x..."
}
// Add multiple links (sponsored batch - NEW!)
POST /api/add-multiple-links
{
profileId: "0x...",
links: [
{ title: "Twitter", url: "...", icon: "twitter" },
{ title: "Instagram", url: "...", icon: "instagram" },
{ title: "Website", url: "...", icon: "website" }
],
sender: "0x..."
}
// Execute signed transaction
POST /api/execute-transaction
{
digest: "...",
signature: "..."
}- Lines of Code: ~5,000+ (Move + TypeScript)
- Smart Contract: 447 lines of Move code
- Frontend Components: 8 React components + 6 pages
- Backend Endpoints: 4 sponsored transaction APIs
- Supported Auth: zkLogin (Google) + Regular Wallets
- Deployment: Walrus Sites (decentralized)
- Gas Fees: $0 for all users
First LinkTree platform to combine:
- PTB (Programmable Transaction Blocks) for batching
- Enoki sponsorship for zero gas
- Works with zkLogin seamlessly
Example: Add 10 links โ 1 transaction โ $0 gas โ 5 seconds
- Create profile: sponsored โ
- Add single link: sponsored โ
- Add multiple links: sponsored โ (NEW!)
- All via Google login, no wallet setup
- Frontend: Walrus Sites (decentralized storage)
- Smart Contract: Sui blockchain (on-chain data)
- Backend: Node.js (can be decentralized with serverless)
- WebGL animated backgrounds (DarkVeil)
- Mobile-responsive design
- Real-time validation
- Toast notifications
- Loading states
- Error handling
Frontend:
cd frontend
npm run build
# Output: frontend/dist/Backend:
cd backend
npm run build
# Output: backend/dist/cd frontend
# Build first
npm run build
# Update routes in dist/ws-resources.json
# Then upload to Walrus
./site-builder update --epochs 1 ./dist <SITE_OBJECT_ID># Frontend linting
cd frontend
npm run lint
# Backend linting
cd backend
npm run lint
# Move contract tests
cd move
sui move test- Logo: Custom cat chain logo (unique branding)
- Color Scheme: Dark theme with blue/purple accents
- Animations: DarkVeil WebGL background (performance optimized)
- Typography: Inter font family, clean and modern
- Icons: Social media icons, custom SVGs
- Onboarding: 3-step profile creation wizard
- Feedback: Toast notifications for all actions
- Loading States: Spinners and progress indicators
- Error Handling: User-friendly error messages
- Responsive: Mobile-first, tablet, desktop optimized
- Semantic HTML
- ARIA labels where needed
- Keyboard navigation support
- High contrast text
- Smart contract (Move) with username registry
- zkLogin authentication (Google OAuth)
- Sponsored transactions (create profile, add link)
- Batch link addition (PTB + sponsorship)
- Frontend deployed on Walrus Sites
- Backend sponsorship server
- DarkVeil animated backgrounds
- Mobile-responsive design
- Custom logo integration
- Mainnet deployment
- Gas fee optimization
- Enhanced analytics dashboard
- Profile themes (multiple options)
- SuiNS integration (.sui domains)
- NFT profile pictures
- Custom domain support (BYOD)
- Link monetization (payment gates)
- QR code generation
- Social sharing features
- Profile discovery/explore page
- Smart Contract: Audited Move code with ownership checks
- zkLogin: Google OAuth via Enoki (no private keys stored)
- Sponsored TX: Backend validates sender before sponsoring
- On-Chain Data: Immutable, tamper-proof profiles
- No Central DB: All data on Sui blockchain
MIT License - Open source and free to use
- Sui Foundation - For the amazing blockchain infrastructure
- Mysten Labs - For Sui SDK and tooling
- Walrus Team - For decentralized storage solution
- Enoki - For zkLogin and sponsorship capabilities
- Live Demo: Contact for testnet portal URL
- Smart Contract: View on Sui Explorer
- Documentation: See
/docsfolder - Support: Open an issue on GitHub
QEDI - Making Web3 as easy as Web2, one profile at a time. ๐ฑโ๏ธ
