Sistem modern untuk penerbitan, penyimpanan, dan verifikasi ijazah digital berbasis teknologi blockchain Ethereum (Sepolia Testnet). Dibangun dengan arsitektur full-stack: Next.js 16 + Laravel 13 + MySQL + Ethereum Smart Contract.
- Tentang Proyek
- Fitur Utama
- Preview Sistem
- Flow Sistem
- Teknologi
- Struktur Proyek
- Prasyarat
- Instalasi Backend
- Instalasi Frontend
- Deploy Smart Contract
- Konfigurasi Blockchain
- API Endpoints
- Akun Demo
- Keamanan
- Developer
- Lisensi
Ijazah Digital Berbasis Blockchain adalah sistem digitalisasi ijazah yang dikembangkan untuk Universitas Subang (UNSUB). Sistem ini memungkinkan institusi pendidikan untuk menerbitkan, menyimpan, dan memverifikasi ijazah secara aman, transparan, dan anti-pemalsuan dengan memanfaatkan teknologi blockchain Ethereum.
| Masalah | Solusi |
|---|---|
| Pemalsuan ijazah | Hash SHA-256 disimpan di blockchain (immutable) |
| Verifikasi manual & lambat | Verifikasi instan via hash/QR code/file upload |
| Data bisa diubah | Blockchain menjamin integritas data |
| Tidak transparan | Publik bisa verifikasi kapan saja |
| Aspek | Detail |
|---|---|
| Network | Sepolia Testnet (Chain ID: 11155111) |
| Gas Fee | SepoliaETH gratis dari faucet |
| Biaya | Tidak ada uang sungguhan yang digunakan |
| Production | Deploy ulang ke Ethereum Mainnet (Chain ID: 1) |
| Explorer | https://sepolia.etherscan.io |
- Pengelolaan data mahasiswa & ijazah
- Generate hash SHA-256 otomatis
- Generate PDF ijazah (DomPDF)
- Generate QR Code verifikasi
- Penyimpanan hash ijazah ke smart contract (Sepolia Testnet)
- Verifikasi hash on-chain
- Revoke sertifikat di blockchain
- Dukungan Mock Mode untuk development
| Metode | Cara Kerja |
|---|---|
| Via Hash | Masukkan SHA-256 hash (64 karakter hex) |
| Via File | Upload PDF ijazah, auto-hash & verifikasi |
| Via QR Code | Scan QR pada PDF β redirect ke halaman verifikasi |
| Role | Akses |
|---|---|
| Super Admin | Akses penuh, manajemen user |
| Admin Akademik | Manajemen mahasiswa & ijazah |
| Verifikator | Lihat log verifikasi |
| Mahasiswa | Lihat profil & status ijazah sendiri |
- Statistik real-time (total alumni, ijazah terbit, verifikasi)
- Grafik interaktif (Recharts)
- Audit trail aktivitas pengguna
- Riwayat transaksi blockchain
π Halaman Awal β Landing Page |
π Manajemen Sertifikat β Admin Dashboard |
βοΈ Sepolia Testnet β Transaksi Blockchain |
β Hasil Validasi β Verifikasi Ijazah |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SISTEM IJAZAH DIGITAL β
β BERBASIS BLOCKCHAIN β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββ ββββββββββββββββ βββββββββββββββββββ ββββββββββββββββ
β MAHASISWAββββ>β ADMIN INPUT ββββ>β GENERATE IJAZAH ββββ>β DRAFT (Lokal)β
β (Lulus) β β Data/Ijazah β β (Hash + QR) β β β
ββββββββββββ ββββββββββββββββ βββββββββββββββββββ ββββββββ¬ββββββββ
β
v
βββββββββββββββββββ
β PUBLISH KE β
β BLOCKCHAIN β
β (Sepolia Testnet)β
ββββββββββ¬βββββββββ
β
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββ
v v v
βββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β HASH ON-CHAINβ β GENERATE PDF β β QR CODE β
β (Immutable) β β (DomPDF) β β (Verifikasi) β
βββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β
v
βββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β VERIFIKASI β<βββββββββ SCAN QR CODE β<ββββββββ DOWNLOAD PDF β
β (3 Metode) β β / Upload PDF β β (Alumni) β
βββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β
v
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β HASIL: VALID / REVOKED β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
- Upload β Admin upload data mahasiswa & file PDF ijazah yang sudah ada
- Hash β Sistem auto-hitung SHA-256 hash dari data/file PDF
- Blockchain β Hash + metadata disimpan ke smart contract di Sepolia Testnet
- QR Code β Generate QR berisi link verifikasi (tertanam di PDF)
- Verifikasi β Publik bisa verifikasi via Hash / Upload PDF / Scan QR
- Pencocokan β Hash dicocokkan dengan data di blockchain
| Teknologi | Versi | Fungsi |
|---|---|---|
| Next.js | 16.2.6 | Framework React full-stack (App Router) |
| React | 19.2.4 | Library UI |
| TypeScript | 5.x | Type safety |
| Tailwind CSS | 4.x | Utility-first styling |
| Framer Motion | 12.38.0 | Animasi UI |
| GSAP | 3.15.0 | Advanced animations |
| Three.js / R3F | 0.184.0 | 3D rendering |
| TanStack React Query | 5.100.9 | Server state management |
| Axios | 1.16.0 | HTTP client |
| React Hook Form | 7.75.0 | Form handling |
| Zod | 4.4.3 | Validasi form |
| Recharts | 3.8.1 | Chart & diagram |
| Lucide React | 1.14.0 | Icon library |
| Radix UI | β | Komponen UI aksesibel |
| Teknologi | Versi | Fungsi |
|---|---|---|
| PHP | ^8.3 | Bahasa pemrograman |
| Laravel | 13.x | Framework MVC |
| Laravel Sanctum | 4.3 | API authentication (token) |
| Spatie Permission | 7.4 | RBAC |
| Laravel DomPDF | 3.1 | Generate PDF |
| Endroid QR Code | 6.1 | Generate QR Code |
| web3p/web3.php | 0.1.6 | Ethereum JSON-RPC client |
| Teknologi | Versi |
|---|---|
| MySQL | 8.0+ |
| Aspek | Detail |
|---|---|
| Blockchain | Ethereum |
| Testnet | Sepolia (Chain ID: 11155111) |
| Mainnet | Ethereum (Chain ID: 1) |
| Smart Contract | IjazahStorage.sol & CertificateRegistry.sol |
| Library Backend | web3p/web3.php (JSON-RPC) |
| Library Frontend | ethers.js v6 (MetaMask) |
| Mock Mode | Tersedia untuk development |
| Block Explorer | Sepolia Etherscan |
ijazah-blockchain-unsub/
β
βββ contracts/ # Smart Contracts (Solidity)
β βββ IjazahStorage.sol # Kontrak utama (^0.8.19)
β βββ CertificateRegistry.sol # Kontrak alternatif (^0.8.20)
β
βββ backend/ # Laravel 13 REST API
β βββ app/
β β βββ Http/Controllers/API/
β β β βββ AuthController.php
β β β βββ CertificateController.php
β β β βββ VerificationController.php
β β β βββ DashboardController.php
β β β βββ MahasiswaController.php
β β β βββ AdminController.php
β β βββ Models/
β β β βββ User.php
β β β βββ Mahasiswa.php
β β β βββ Ijazah.php
β β β βββ Fakultas.php
β β β βββ Prodi.php
β β β βββ BlockchainTransaction.php
β β β βββ VerificationLog.php
β β β βββ ActivityLog.php
β β βββ Services/
β β βββ CertificateService.php
β β βββ BlockchainService.php
β βββ routes/api.php
β βββ database/schema.sql
β βββ resources/views/certificates/ijazah.blade.php
β
βββ frontend/ # Next.js 16 App
β βββ app/
β β βββ page.tsx # Landing page
β β βββ login/page.tsx
β β βββ verify/page.tsx
β β βββ verify/[hash]/page.tsx
β β βββ dashboard/
β β βββ page.tsx
β β βββ mahasiswa/
β β βββ sertifikat/
β β βββ verifikasi/
β β βββ riwayat/
β β βββ admin/
β βββ components/
β βββ hooks/
β βββ useWallet.ts # MetaMask wallet hook
β
βββ database/
β βββ schema.sql
β
βββ docs/ # Dokumentasi
βββ foto/ # Screenshots
β βββ page_awal.png
β βββ sertifikat_diadmin.png
β βββ testnet_eth.png
β βββ validasi_hasil.png
β
βββ dokumen.txt # Dokumentasi sistem lengkap
βββ README.md
Sebelum memulai instalasi, pastikan software berikut sudah terinstall:
| Software | Versi Minimal |
|---|---|
| PHP | ^8.3 |
| Composer | Latest |
| Node.js | ^18 / 20+ |
| NPM | Latest |
| MySQL | 8.0+ |
| Git | Latest |
| MetaMask | Browser Extension |
| Foundry (opsional) | Latest |
git clone https://github.com/muadzie/IJASAH-BLOCKCHAIN.git
cd ijazah-blockchain-unsubcd backend
composer install
cp .env.example .envEdit file .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ijazah_blockchain
DB_USERNAME=root
DB_PASSWORD=php artisan key:generate
php artisan migrate --seed
php artisan storage:linkphp artisan serveBackend akan berjalan di http://localhost:8000.
cd frontend
cp .env.example .env.local
npm installEdit .env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000/apinpm run devFrontend akan berjalan di http://localhost:3000.
# Install Foundry (https://book.getfoundry.sh)
curl -L https://foundry.paradigm.xyz | bash
foundryup| Faucet | URL |
|---|---|
| Alchemy | https://sepoliafaucet.com |
| QuickNode | https://faucet.quicknode.com/ethereum/sepolia |
| PoW Faucet | https://sepolia-faucet.pk910.de |
forge create --rpc-url https://rpc.sepolia.org \
--private-key YOUR_PRIVATE_KEY \
contracts/IjazahStorage.sol:IjazahStorageSetelah deploy, update .env backend dengan contract address:
BLOCKCHAIN_RPC_URL=https://sepolia.infura.io/v3/YOUR_API_KEY
BLOCKCHAIN_CONTRACT_ADDRESS=0x_DEPLOYED_CONTRACT_ADDRESS
BLOCKCHAIN_MOCK_MODE=falseforge verify-contract \
--chain-id 11155111 \
--etherscan-api-key YOUR_API_KEY \
0x_DEPLOYED_CONTRACT_ADDRESS \
contracts/IjazahStorage.sol:IjazahStorageUntuk mode development, sistem menggunakan Mock Mode secara default. Mode ini men-generate transaction hash palsu tanpa perlu koneksi ke blockchain sungguhan.
Backend .env:
# Mock Mode (development)
BLOCKCHAIN_MOCK_MODE=true
# Production (Sepolia Testnet)
# BLOCKCHAIN_MOCK_MODE=false
# BLOCKCHAIN_RPC_URL=https://sepolia.infura.io/v3/YOUR_API_KEY
# BLOCKCHAIN_CONTRACT_ADDRESS=0x...
# BLOCKCHAIN_NETWORK=sepolia| Method | Endpoint | Deskripsi |
|---|---|---|
POST |
/api/verify/hash |
Verifikasi hash ke smart contract |
POST |
/api/verify/file |
Upload PDF, auto-hash, verifikasi |
GET |
/api/verify/{hash} |
Verifikasi via URL (QR code) |
GET |
/api/verify/stats |
Statistik verifikasi |
GET |
/api/verify/etherscan/{txHash} |
Redirect ke Etherscan |
| Method | Endpoint | Deskripsi |
|---|---|---|
POST |
/api/auth/login |
Login |
POST |
/api/auth/logout |
Logout |
GET |
/api/auth/me |
Profile |
POST |
/api/ijazah |
Generate ijazah |
POST |
/api/ijazah/upload |
Upload PDF + simpan hash ke Sepolia |
GET |
/api/ijazah |
List ijazah |
GET |
/api/ijazah/{id} |
Detail + link Etherscan |
POST |
/api/ijazah/{id}/publish |
Publish ke blockchain |
POST |
/api/ijazah/{id}/revoke |
Revoke di blockchain |
GET |
/api/ijazah/blockchain/stats |
Statistik blockchain |
GET |
/api/ijazah/blockchain/balance |
Cek balance SepoliaETH |
| CRUD | /api/mahasiswa |
Manajemen mahasiswa |
| Role | Password | |
|---|---|---|
| Super Admin | admin@unsub.ac.id |
admin123 |
| Aspek | Implementasi |
|---|---|
| Password | bcrypt hashing |
| API Auth | Laravel Sanctum (token-based) |
| CORS | Terbatas ke frontend URL |
| Input Validation | Form Request / Validator |
| SQL Injection | Eloquent ORM (parameter binding) |
| XSS | Blade escaping |
| Blockchain | Data immutable, hash verification |
| Audit Trail | Semua aktivitas tercatat |
|
Ilham Mu'adz Fakhrizi Full-Stack Developer & Blockchain Enthusiast Universitas Subang (UNSUB) |
| Kontak | Info |
|---|---|
| π§ Email | ilhammuadz133@gmail.com |
| π GitHub | @muadzie |
Hak Cipta Β© 2026 Ilham Mu'adz Fakhrizi
Seluruh hak cipta dilindungi undang-undang. Dilarang menyalin, mendistribusikan, atau memodifikasi sebagian maupun seluruh kode sumber aplikasi tanpa izin tertulis dari pengembang.
Jika proyek ini membantu, silakan dukung dengan:
- π Star Repository
- π΄ Fork Project
- π οΈ Contribution & Feedback
- π’ Share ke yang membutuhkan
Built with β€οΈ for Universitas Subang (UNSUB)
Β© 2026 Ilham Mu'adz Fakhrizi. All rights reserved.



