Skip to content

Latest commit

Β 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ Ijazah Digital Berbasis Blockchain

Blockchain-Based Digital Diploma Verification System

Universitas Subang (UNSUB) β€” Sepolia Testnet

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.



πŸ“‹ Daftar Isi


🎯 Tentang Proyek

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.

Mengapa Blockchain?

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

⚠️ PENTING: TESTNET, BUKAN MAINNET!

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

✨ Fitur Utama

πŸ“„ Manajemen Ijazah Digital

  • Pengelolaan data mahasiswa & ijazah
  • Generate hash SHA-256 otomatis
  • Generate PDF ijazah (DomPDF)
  • Generate QR Code verifikasi

⛓️ Integrasi Blockchain Ethereum

  • Penyimpanan hash ijazah ke smart contract (Sepolia Testnet)
  • Verifikasi hash on-chain
  • Revoke sertifikat di blockchain
  • Dukungan Mock Mode untuk development

πŸ” Verifikasi Publik (3 Metode)

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-Based Access Control

Role Akses
Super Admin Akses penuh, manajemen user
Admin Akademik Manajemen mahasiswa & ijazah
Verifikator Lihat log verifikasi
Mahasiswa Lihat profil & status ijazah sendiri

πŸ“Š Dashboard & Monitoring

  • Statistik real-time (total alumni, ijazah terbit, verifikasi)
  • Grafik interaktif (Recharts)
  • Audit trail aktivitas pengguna
  • Riwayat transaksi blockchain

πŸ“Έ Preview Sistem

Halaman Awal
🏠 Halaman Awal β€” Landing Page
Manajemen Sertifikat
πŸ“œ Manajemen Sertifikat β€” Admin Dashboard
Testnet Ethereum
⛓️ Sepolia Testnet β€” Transaksi Blockchain
Hasil Validasi
βœ… Hasil Validasi β€” Verifikasi Ijazah

πŸ”„ Flow Sistem

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚                    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              β”‚
                                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Detail Alur:

  1. Upload β€” Admin upload data mahasiswa & file PDF ijazah yang sudah ada
  2. Hash β€” Sistem auto-hitung SHA-256 hash dari data/file PDF
  3. Blockchain β€” Hash + metadata disimpan ke smart contract di Sepolia Testnet
  4. QR Code β€” Generate QR berisi link verifikasi (tertanam di PDF)
  5. Verifikasi β€” Publik bisa verifikasi via Hash / Upload PDF / Scan QR
  6. Pencocokan β€” Hash dicocokkan dengan data di blockchain

πŸ› οΈ Teknologi

Frontend

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

Backend

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

Database

Teknologi Versi
MySQL 8.0+

Blockchain & Smart Contract

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

πŸ“‚ Struktur Proyek

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

πŸ“‹ Prasyarat

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

πŸ”§ Instalasi Backend

1. Clone Repository

git clone https://github.com/muadzie/IJASAH-BLOCKCHAIN.git
cd ijazah-blockchain-unsub

2. Setup Backend

cd backend
composer install
cp .env.example .env

3. Konfigurasi Database

Edit file .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ijazah_blockchain
DB_USERNAME=root
DB_PASSWORD=

4. Generate Key & Migrate

php artisan key:generate
php artisan migrate --seed
php artisan storage:link

5. Jalankan Backend Server

php artisan serve

Backend akan berjalan di http://localhost:8000.


πŸ’» Instalasi Frontend

1. Setup Frontend

cd frontend
cp .env.example .env.local
npm install

Edit .env.local:

NEXT_PUBLIC_API_URL=http://localhost:8000/api

2. Jalankan Frontend

npm run dev

Frontend akan berjalan di http://localhost:3000.


⛓️ Deploy Smart Contract ke Sepolia

1. Install Foundry

# Install Foundry (https://book.getfoundry.sh)
curl -L https://foundry.paradigm.xyz | bash
foundryup

2. Dapatkan SepoliaETH (Gratis)

Faucet URL
Alchemy https://sepoliafaucet.com
QuickNode https://faucet.quicknode.com/ethereum/sepolia
PoW Faucet https://sepolia-faucet.pk910.de

3. Deploy Contract

forge create --rpc-url https://rpc.sepolia.org \
  --private-key YOUR_PRIVATE_KEY \
  contracts/IjazahStorage.sol:IjazahStorage

4. Update Environment

Setelah 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=false

5. Verifikasi di Etherscan

forge verify-contract \
  --chain-id 11155111 \
  --etherscan-api-key YOUR_API_KEY \
  0x_DEPLOYED_CONTRACT_ADDRESS \
  contracts/IjazahStorage.sol:IjazahStorage

βš™οΈ Konfigurasi Blockchain

Untuk 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

🌐 API Endpoints

Public (Verifikasi via Sepolia Testnet)

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

Admin (Authenticated β€” Sanctum Token)

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

πŸ‘€ Akun Demo

Role Email Password
Super Admin admin@unsub.ac.id admin123

πŸ” Keamanan

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

πŸ‘¨β€πŸ’» Developer

Ilham Mu'adz Fakhrizi
Full-Stack Developer & Blockchain Enthusiast
Universitas Subang (UNSUB)
Kontak Info
πŸ“§ Email ilhammuadz133@gmail.com
πŸ™ GitHub @muadzie

πŸ“„ Lisensi

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.


⭐ Dukungan

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.

About

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.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages