A decentralized platform for project collaboration, freelance jobs, and on-chain messaging built on Sui blockchain.
Live Demo โข Sui Explorer โข Documentation
- Passwordless login via Google OAuth
- Powered by Mysten Labs Enoki
- Gas sponsorship for seamless UX
- On-chain username registration as NFT
- Unique user identity across the platform
- Profile verification via blockchain
- Create and showcase projects on-chain
- Multiple project types: Pull Requests, Hackathons, Documentation, etc.
- Immutable proof of contributions
- Community endorsements
- Post job listings with SUI token budgets
- Apply for jobs with cover letters
- Job assignment and completion tracking
- On-chain payment settlements
- Peer-to-peer encrypted messaging
- All messages stored on Sui blockchain
- Transaction-verified message authenticity
- Permanent and immutable communication history
- Top contributors ranking
- Community profiles discovery
- Achievement tracking
Located in /move directory:
move/
โโโ sources/
โ โโโ username.move # User profile NFTs
โ โโโ contribution.move # Project registry
โ โโโ messaging.move # On-chain messaging
โ โโโ jobs.move # Freelance job platform
โโโ tests/
โโโ contribution_tests.move
Deployed Contracts (Testnet):
- Main Package:
0xdb0f5cdf05d5e03ceee2c00c4bfafe7e6a95a12f198362c7080017d1c57d28fb - Username Registry:
0x4e893f556ca298e3ce4ce63c7e6c0f4311f6fa774b3d32f0349a59287e10b11e - Project Registry:
0x373ca7995f0c408bc88355504633516a4a0e0aaffd3e93c9deb9d28000232861 - Jobs Package:
0x7051e5fc1852ef619b7b6893eb623059c47359dde27b8c35bb23f64506f78b31
Located in /sui-dapp directory:
sui-dapp/
โโโ src/
โ โโโ components/ # Reusable UI components
โ โโโ pages/ # Application pages
โ โโโ contexts/ # React context providers
โ โโโ hooks/ # Custom React hooks
โ โโโ lib/ # Utilities and helpers
โ โโโ config/ # Configuration files
โ โโโ constants/ # Application constants
โโโ public/ # Static assets
โโโ move/ # Local Move contract reference
Tech Stack:
- Frontend: React 18.3, Vite 7.1, TailwindCSS 3.4
- Blockchain: @mysten/dapp-kit 0.19, @mysten/sui 1.43
- Authentication: @mysten/enoki 0.12 (zkLogin)
- State Management: React Query, Context API
- UI Components: Radix UI, Lucide Icons
- Node.js: v18 or higher
- Sui CLI: Latest version (Installation Guide)
- Walrus CLI (for deployment): Installation Guide
-
Clone the repository
git clone https://github.com/Myxoceph/SUI-Hackathon.git cd SUI-Hackathon -
Install frontend dependencies
cd sui-dapp npm install -
Configure environment variables
Create
.envfile insui-dapp/directory:VITE_ENOKI_PUBLIC_KEY=your_enoki_public_key VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id VITE_SUI_NETWORK=testnet
Note: Get your Enoki API key from Mysten Labs Enoki Portal
Start development server:
npm run devThe application will be available at http://localhost:5173
Key development commands:
npm run build # Build for production
npm run build:prod # Production build with optimizations
npm run typecheck # TypeScript type checking
npm run lint # ESLint code analysis
npm run lint:fix # Auto-fix linting issues
npm run clean # Clean build artifactsPeerFlow is deployed on Walrus, a decentralized storage network for Sui.
Deploy to Walrus (10 days):
npm run deploy:walrusDeploy to Walrus (30 days):
npm run deploy:walrus:30dManual deployment:
# Build production bundle
npm run build:prod
# Publish to Walrus
site-builder publish --epochs 10 dist/After deployment, your site will be accessible at:
https://{site-id}.trwal.app/
The app can also be deployed to traditional hosting platforms:
- Build the project:
npm run build - Deploy the
dist/directory - Configure environment variables in hosting dashboard
- Click "Connect Wallet" button
- Choose Google OAuth for zkLogin
- Grant permissions
- Enter a unique username (3-20 characters)
- Username is minted as an NFT on-chain
- Gas fees sponsored by Enoki
- Navigate to "Contribute" page
- Fill in project details:
- Type (Pull Request, Hackathon, etc.)
- Title and description
- Proof link (GitHub, etc.)
- Submit transaction
- Go to "Jobs" page
- Click "Post New Job"
- Specify:
- Job title and description
- Required skills
- Budget in SUI tokens
- Confirm transaction
- Navigate to "Messages" page
- Click "New Chat"
- Enter recipient's SUI address
- Start on-chain messaging
- Browse all projects in "Explore" page
- Endorse projects you like
- View project details on-chain
public entry fun register_username(
registry: &mut UsernameRegistry,
username: String,
ctx: &mut TxContext
)public entry fun create_project(
registry: &mut ProjectRegistry,
project_type: String,
title: String,
description: String,
proof_link: String,
ctx: &mut TxContext
)
public entry fun endorse_project(
registry: &mut ProjectRegistry,
project_id: ID,
ctx: &mut TxContext
)public entry fun create_job(
registry: &mut JobRegistry,
title: String,
description: String,
tags: vector<String>,
budget_sui: u64,
ctx: &mut TxContext
)
public entry fun assign_job(
registry: &mut JobRegistry,
job_id: ID,
worker: address,
ctx: &mut TxContext
)All transactions have optimized gas budgets:
| Transaction Type | Gas Budget |
|---|---|
| Username Registration | 0.05 SUI |
| Create Project | 0.05 SUI |
| Create Job | 0.05 SUI |
| Endorse Project | 0.03 SUI |
| Apply for Job | 0.03 SUI |
| Assign Job | 0.03 SUI |
| Send Message | 0.02 SUI |
To enable automatic gas sponsorship:
- Visit Enoki Portal
- Navigate to Gas Sponsorship section
- Add Move Call Targets:
0xdb0f5cdf05d5e03ceee2c00c4bfafe7e6a95a12f198362c7080017d1c57d28fb::username::register_username 0xdb0f5cdf05d5e03ceee2c00c4bfafe7e6a95a12f198362c7080017d1c57d28fb::contribution::create_project 0x7051e5fc1852ef619b7b6893eb623059c47359dde27b8c35bb23f64506f78b31::jobs::create_job - Click SAVE
The app defaults to Sui Testnet. To change networks:
// sui-dapp/src/config/networkConfig.js
export const networkConfig = createNetworkConfig({
testnet: { url: getFullnodeUrl("testnet") },
mainnet: { url: getFullnodeUrl("mainnet") },
});npm run testcd move
sui move test- Wallet connection (zkLogin)
- Username registration
- Project creation
- Job posting
- Message sending
- Transaction confirmations
- Error handling
1. "No valid gas coins found"
- Solution: Get testnet SUI from Sui Faucet
- Or ensure Enoki sponsorship is configured correctly
2. "Username already taken"
- Solution: Try a different username
- Check on-chain registry for availability
3. Black screen after deployment
- Solution: Clear browser cache
- Check browser console for errors
- Verify environment variables
4. Transaction failures
- Solution: Check gas budget
- Verify wallet has sufficient balance
- Ensure network connectivity
SUI-Hackathon/
โโโ move/ # Move smart contracts
โ โโโ sources/
โ โ โโโ username.move
โ โ โโโ contribution.move
โ โ โโโ messaging.move
โ โ โโโ jobs.move
โ โโโ tests/
โ โโโ Move.toml
โ
โโโ sui-dapp/ # React frontend
โ โโโ src/
โ โ โโโ components/ # UI components
โ โ โ โโโ Chat.jsx
โ โ โ โโโ Navbar.jsx
โ โ โ โโโ UsernameSetup.jsx
โ โ โ โโโ ui/ # Radix UI components
โ โ โโโ pages/ # Application pages
โ โ โ โโโ Home.jsx
โ โ โ โโโ Explore.jsx
โ โ โ โโโ Jobs.jsx
โ โ โ โโโ Messages.jsx
โ โ โ โโโ Passport.jsx
โ โ โโโ contexts/ # React contexts
โ โ โ โโโ WalletContext.jsx
โ โ โ โโโ MessagingContext.jsx
โ โ โโโ hooks/ # Custom hooks
โ โ โโโ lib/ # Utilities
โ โ โ โโโ suiTransactions.js
โ โ โ โโโ jobTransactions.js
โ โ โ โโโ userProfile.js
โ โ โโโ config/ # Configuration
โ โ โ โโโ contracts.js
โ โ โ โโโ networkConfig.js
โ โ โโโ constants/ # Constants
โ โโโ public/ # Static assets
โ โโโ index.html
โ โโโ package.json
โ โโโ vite.config.mts
โ
โโโ README.md # This file
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is licensed under the MIT License - see the LICENSE file for details.
- Live Application: https://5muxfwg5tka1x7pra18ky54i5pqzo8zae9i2y8fkfhtwfp58g0.trwal.app/
- Sui Explorer: View Contracts
- Sui Documentation: https://docs.sui.io/
- Enoki Portal: https://portal.enoki.mystenlabs.com/
- Walrus Documentation: https://docs.walrus.site/
AYS Team
- Decentralized collaboration platform built for the Sui Hackathon 2025
- Mysten Labs - For Sui blockchain and Enoki infrastructure
- Walrus - For decentralized hosting
- Radix UI - For accessible UI components
- Lucide Icons - For beautiful icons
Built with โค๏ธ on Sui blockchain