Selamat datang di proyek Aplikasi Voting Terdesentralisasi! Ini adalah sebuah aplikasi web3 (dApp) yang dibangun untuk menunjukkan bagaimana proses pemilihan dapat dilakukan secara aman, transparan, dan tidak dapat diubah (immutable) dengan memanfaatkan teknologi blockchain Ethereum.
Proyek ini adalah hasil dari proses belajar dan eksplorasi dalam membangun dApp dari awal, mulai dari penulisan smart contract hingga pengembangan antarmuka (frontend) yang interaktif.
- Koneksi Dompet: Terintegrasi dengan MetaMask untuk menghubungkan dompet Ethereum pengguna dengan mudah.
- Deteksi Perubahan Akun: Aplikasi secara otomatis mendeteksi jika pengguna mengganti akun di MetaMask dan memperbarui tampilan secara real-time.
- Daftar Kandidat Dinamis: Menampilkan daftar kandidat langsung dari data yang tersimpan di smart contract.
- Proses Voting On-Chain: Pengguna dapat memberikan suara, dan setiap suara akan dicatat sebagai transaksi di blockchain.
- Panel Admin Khusus Owner:
- Hanya pemilik kontrak yang dapat melihat dan mengakses panel admin.
- Tambah Kandidat: Pemilik dapat menambahkan kandidat baru langsung dari antarmuka.
- Tambah Voter: Pemilik dapat mendaftarkan alamat dompet yang berhak untuk memilih (whitelist).
- Antarmuka Responsif: Dibangun dengan antarmuka yang modern dan nyaman digunakan di berbagai ukuran layar.
Proyek ini dibangun menggunakan teknologi modern di ekosistem web3 dan web2:
- Smart Contract:
- Solidity: Bahasa pemrograman untuk menulis smart contract.
- Frontend:
- Next.js: Framework React untuk aplikasi web modern.
- React: Pustaka JavaScript untuk membangun antarmuka pengguna.
- TypeScript: Menambahkan tipe statis pada JavaScript untuk kode yang lebih solid.
- Ethers.js: Pustaka untuk berinteraksi dengan blockchain Ethereum.
- Tailwind CSS: Framework CSS untuk desain yang cepat dan modern.
Untuk menjalankan proyek ini di mesin lokal Anda, ikuti langkah-langkah berikut:
-
Clone repositori ini:
git clone [URL_GITHUB_ANDA] cd frontend -
Install semua dependensi:
npm install
-
Deploy Smart Contract:
- Deploy
smart contractyang ada di direktori/contractke jaringan tes seperti Sepolia, atau jaringan lokal (Hardhat/Anvil). - Setelah deployment berhasil, Anda akan mendapatkan alamat kontrak.
- Deploy
-
Konfigurasi Frontend:
- Buka file
frontend/src/app/constants/index.ts. - Ganti placeholder
"PASTE_YOUR_DEPLOYED_CONTRACT_ADDRESS_HERE"dengan alamat kontrak yang Anda dapatkan dari langkah sebelumnya.
// src/app/constants/index.ts export const contractAddress = "0xYourDeployedContractAddressHere";
- Buka file
-
Jalankan Server Pengembangan:
npm run dev
-
Buka Aplikasi: Buka http://localhost:3000 di browser Anda. Pastikan MetaMask Anda terhubung ke jaringan yang sama tempat Anda men-deploy kontrak.
Proyek ini adalah sebuah perjalanan belajar. Saya sangat terbuka untuk segala bentuk kontribusi, saran, dan ide untuk peningkatannya. Jika Anda menemukan bug, memiliki ide fitur baru, atau ingin memperbaiki bagian kode, jangan ragu untuk:
- Membuat Issue: Jelaskan bug atau ide Anda di bagian "Issues" repositori ini.
- Fork dan Buat Pull Request: Lakukan perubahan yang Anda inginkan dan ajukan Pull Request.
Setiap masukan sangat saya hargai!
Proyek ini berada di bawah Lisensi MIT. Lihat file LICENSE untuk detail lebih lanjut.