Sistem pengajuan surat kuasa secara online dengan fitur verifikasi admin, notifikasi WhatsApp otomatis, dan generate PDF dengan barcode.
- β Form pengajuan surat kuasa tanpa login (public access)
- β Dashboard admin untuk verifikasi pengajuan
- β Notifikasi WhatsApp otomatis untuk setiap perubahan status
- β Generate PDF surat kuasa dengan barcode verifikasi
- β Tracking status pengajuan
- β Upload dan validasi foto KTP
- β Multi-step form dengan validasi real-time
- β Responsive design dengan Bootstrap 5
- PHP 8.1 atau lebih tinggi
- Composer
- Node.js & NPM
- MySQL/MariaDB
- Web server (Apache/Nginx)
git clone https://github.com/IdhamIKN/EKuasa.git
cd surat-kuasa-online# Install PHP dependencies
composer install
# Install Node dependencies
npm installcomposer require spatie/laravel-permission
composer require barryvdh/laravel-dompdf
composer require milon/barcode
composer require intervention/image# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generateEdit file .env sesuai konfigurasi database Anda:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=surat_kuasa_online
DB_USERNAME=root
DB_PASSWORD=Tambahkan konfigurasi WhatsApp API di file .env:
WHATSAPP_API_URL=https://wa.itbmd.my.id/send-message
WHATSAPP_API_KEY=u7pjIvzrpGx1ZPjRiHKr5wrAfp2LjU
SYSTEM_PHONE_NUMBER=6281234567890
SYSTEM_LOCATION="Kediri"php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"php artisan migratephp artisan storage:linkchmod -R 775 storage bootstrap/cachenpm run buildSetelah instalasi, gunakan kredensial berikut untuk login admin:
- Email:
admin@suratkuasa.com - Password:
admin123
β οΈ PENTING: Segera ganti password default setelah login pertama!
| Field | Type | Description |
|---|---|---|
| id | UUID | Primary key |
| nik_pemberi | VARCHAR(16) | NIK pemberi kuasa |
| tanggal_pengajuan | DATE | Tanggal pengajuan |
| kota_pengajuan | VARCHAR | Kota tempat mengajukan |
| nama_pemberi | VARCHAR | Nama lengkap pemberi kuasa |
| ttl_pemberi | VARCHAR | Tempat tanggal lahir |
| usia_pemberi | INTEGER | Usia pemberi kuasa |
| pekerjaan_pemberi | VARCHAR | Pekerjaan pemberi kuasa |
| alamat_pemberi | TEXT | Alamat lengkap |
| nama_penerima | VARCHAR | Nama penerima kuasa |
| nik_penerima | VARCHAR(16) | NIK penerima kuasa |
| alasan | TEXT | Alasan pemberian kuasa |
| foto_pemberi_ktp | VARCHAR | Path foto KTP |
| no_hp_pemberi | VARCHAR(20) | Nomor HP/WhatsApp |
| status | ENUM | pending/disetujui/ditolak |
| alasan_penolakan | TEXT | Alasan jika ditolak |
| pdf_file | VARCHAR | Path file PDF |
- Pengajuan: Masyarakat mengisi form pengajuan surat kuasa
- Notifikasi: Sistem mengirim notifikasi WhatsApp konfirmasi pengajuan
- Verifikasi: Admin melakukan verifikasi data di dashboard
- Approval/Rejection:
- Jika disetujui: Generate PDF + kirim link download via WhatsApp
- Jika ditolak: Kirim alasan penolakan via WhatsApp
- Tracking: Pemohon dapat melacak status dengan ID pengajuan + NIK
- Form validation di frontend dan backend
- File upload dengan validasi tipe dan ukuran
- Role-based access control untuk admin
- UUID untuk ID pengajuan (tidak mudah ditebak)
- Verifikasi NIK untuk tracking
Pengajuan Baru:
π SURAT KUASA ONLINE
Halo [Nama],
Pengajuan surat kuasa Anda telah diterima dengan detail:
β’ ID Pengajuan: [ID]
β’ Tanggal: [Tanggal]
β’ Status: Menunggu Verifikasi
Mohon tunggu proses verifikasi dari admin.
Disetujui:
β
SURAT KUASA DISETUJUI
Halo [Nama],
Selamat! Pengajuan surat kuasa Anda telah DISETUJUI.
π Download Surat Kuasa: [Link PDF]
Surat kuasa dilengkapi barcode sebagai tanda sah.
Ditolak:
β SURAT KUASA DITOLAK
Halo [Nama],
Pengajuan surat kuasa Anda telah DITOLAK.
Alasan: [Alasan Penolakan]
Anda dapat mengajukan kembali setelah memperbaiki data.
- Statistik: Total, Pending, Disetujui, Ditolak
- Filter: Status dan pencarian
- Aksi: View detail, Approve, Reject, Download PDF
- Real-time: Auto refresh untuk status pending
PDF surat kuasa include:
- Header resmi dengan nomor surat
- Data lengkap pemberi dan penerima kuasa
- Alasan pemberian kuasa
- Area tanda tangan
- Barcode verifikasi di footer
- ID verifikasi untuk validasi
Pemohon dapat melacak status dengan:
- ID Pengajuan (UUID)
- NIK Pemberi Kuasa (16 digit)
Timeline tracking menampilkan:
- Pengajuan dikirim
- Status verifikasi
- PDF tersedia (jika disetujui)
Jika menggunakan gateway WhatsApp lain, edit app/Services/WhatsAppService.php:
public function sendMessage($phoneNumber, $message)
{
// Sesuaikan dengan API gateway Anda
$response = Http::post($this->apiUrl, [
'api_key' => $this->apiKey,
'receiver' => $formattedPhone,
'data' => [
'message' => $message
]
]);
}Template PDF dapat dimodifikasi di resources/views/pdf/surat-kuasa.blade.php
File upload disimpan di storage/app/public/:
- Foto KTP:
ktp-photos/ - PDF Surat:
surat-kuasa/
sudo chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache- Cek koneksi internet
- Verifikasi API key dan endpoint
- Cek format nomor HP (harus +62xxx)
# Install missing fonts (Ubuntu/Debian)
sudo apt-get install php-gd php-zip- Cek konfigurasi
.env - Pastikan MySQL service running
- Verifikasi user database memiliki privileges
Jika menemui masalah, silakan:
- Cek log error di
storage/logs/laravel.log - Pastikan semua requirements terpenuhi
- Verifikasi konfigurasi
.env
MIT License. Silakan gunakan dan modifikasi sesuai kebutuhan.
Dikembangkan dengan β€οΈ untuk kemudahan masyarakat dalam pengurusan surat kuasa