Skip to content

Latest commit

 

History

History
143 lines (112 loc) · 3.48 KB

File metadata and controls

143 lines (112 loc) · 3.48 KB

🌬️ Wind Example DApp

Contoh sederhana Decentralized Application (DApp) yang terintegrasi dengan Wind Wallet.
Project ini dibuat sebagai boilerplate bagi pengembang pemula maupun profesional yang ingin membangun DApp di ekosistem Vexanium menggunakan WharfKit.


🚀 Fitur Utama

  • 🔑 Login via Wind Wallet menggunakan QR/VSR (VEX Signing Request).
  • 🌐 Koneksi Peer-to-Peer (WebRTC) dengan PeerJS untuk komunikasi aman.
  • 📝 Transaksi & Signing Request ke blockchain Vexanium.
  • 📦 Contoh implementasi minimal agar mudah dipahami dan dikembangkan.

🛠️ Teknologi yang Digunakan


📦 Instalasi & Menjalankan

# Clone repo
git clone https://github.com/windvex/wind-example-dapp.git
cd wind-example-dapp

# Install dependencies
npm install

# Jalankan dev server
npm run dev

Buka di browser:
👉 http://localhost:5173


📖 Cara Menggunakan

  1. Pastikan Anda sudah memiliki Wind Wallet.
    Jika belum, buka: https://wind-wallet.web.app.
  2. Jalankan DApp dengan npm run dev.
  3. Klik Login dengan Wind Wallet, lalu scan QR atau buka link VSR.
  4. Setelah login, Anda dapat mencoba request tanda tangan / transaksi.

📂 Struktur Project

wind-example-dapp/
├─ src/
│  ├─ components/       # Komponen Vue (WalletSelector, dll.)
│  ├─ js/               # Modul JS (wallet.js, nodes.js, dll.)
│  ├─ pages/            # Halaman utama (Home.vue, Transfer.vue, Vote.vue)
│  └─ App.vue           # Root aplikasi
├─ package.json
└─ README.md

💻 Contoh Kode Integrasi

Login dengan Wind Wallet

import Wallet from '@/js/wallet.js'

async function login() {
  try {
    const session = await Wallet.login()
    console.log('Login berhasil:', session.actor.toString())
  } catch (err) {
    console.error('Login gagal:', err)
  }
}

Transaksi Vote BP

import Wallet from '@/js/wallet.js'
import { client } from '@/js/nodes.js'

async function voteBP(bpName) {
  if (!Wallet.isConnected()) {
    throw new Error('Harus login terlebih dahulu')
  }

  const actor = Wallet.getActor()
  const permission = Wallet.getPermission()

  const action = {
    account: 'vexcore',
    name: 'voteproducer',
    authorization: [{
      actor,
      permission,
    }],
    data: {
      voter: actor,
      proxy: '',
      producers: [bpName],
    },
  }

  try {
    const trx = await Wallet.transact({ actions: [action] })
    console.log('Vote berhasil, trx id:', trx.transaction_id)
  } catch (err) {
    console.error('Gagal vote BP:', err)
  }
}

🤝 Kontribusi

Kami sangat terbuka untuk kontribusi dari komunitas!
Langkah berkontribusi:

  1. Fork repo ini.
  2. Buat branch baru:
    git checkout -b fitur-anda
  3. Lakukan perubahan, lalu commit:
    git commit -m "Menambahkan fitur X"
  4. Push branch ke repo Anda dan buat Pull Request.

📬 Hubungi Kami


Jangan lupa kasih bintang repo ini jika bermanfaat!
Kontribusi Anda akan membantu mendukung ekosistem Vexanium dan Wind Wallet.