Implementation Plan: Rebuild Aplikasi Sertifikasi Halal (SiHalal)

Dokumen ini adalah panduan utama pengembangan aplikasi SiHalal.
Berdasarkan analisa langsung dari sistem existing: https://ptsp.halal.go.id


1. Hasil Analisa Sistem Existing (ptsp.halal.go.id)

1.1 Fitur — Role: UMKM (Pelaku Usaha)

Kategori Menu Deskripsi
MENU UTAMA Dashboard Welcome page, langkah cepat (Lengkapi Profil → Siapkan Dokumen → Pantau Status), notifikasi keamanan
MENU UTAMA Pelaku Usaha Profil usaha lengkap (nama, alamat, kota, provinsi, kodepos, telepon, email, perizinan, KBLI)
SERTIFIKASI HALAL Tagihan / Invoice Daftar tagihan pembayaran sertifikasi
SERTIFIKASI HALAL Status Permohonan Tracking status pengajuan sertifikasi
SERTIFIKASI HALAL Pengajuan Self Declare Mandiri Pengajuan sertifikasi mandiri untuk UMKM mikro (kuesioner)
SERTIFIKASI HALAL Pengajuan Self Declare Pengajuan self declare standar
SERTIFIKASI HALAL Pengajuan Reguler Pengajuan sertifikasi reguler (non-UMKM mikro)
KALKULATOR Kalkulator Simulasi Perhitungan Simulasi biaya sertifikasi halal
REGISTRASI SHLN Invoice Invoice khusus registrasi SHLN
REGISTRASI SHLN Submissions Pendaftaran sertifikat halal luar negeri

Detail Halaman Pelaku Usaha:

Detail Pengajuan Self Declare Mandiri:

Detail Pengajuan Reguler:

Detail Submissions (SHLN):


1.2 Fitur — Role: Fasilitator

Kategori Menu Deskripsi
PENDAFTAR Profile Profil fasilitator (nama, jenis, wilayah kerja, PIC)
FACILITATE REGISTRATION Daftar Fasilitas Melihat program fasilitasi yang sudah dibuat & kuota
FACILITATE REGISTRATION Entri Fasilitas Membuat program fasilitasi baru
DAFTAR PELAKU USAHA Pembatalan Kelola permintaan pembatalan sertifikasi
DAFTAR PELAKU USAHA Inquiry Pencarian & review data pengajuan UMKM
INVOICE Invoice Fasilitasi Kelola tagihan fasilitasi

Detail Profile Fasilitator:

Detail Daftar Fasilitas:

Detail Entri Fasilitas:

Detail Inquiry:

Detail Pembatalan:

Detail Invoice Fasilitasi:


1.3 Fitur Umum (Semua Role)

Fitur Detail
Multi-bahasa Switcher ID / EN (di header)
Login Username + Password + reCAPTCHA
Registrasi Tipe Pengguna (Fasilitator / Pelaku Usaha), Nama, Email, No HP (+62), Password, Konfirmasi
Lupa Password Reset password via email
Dokumentasi Link panduan penggunaan sistem
Theme Customizer Primary color, Dark/Light mode (optional)
Integrasi Terhubung ke OSS & BSE (referensi)

2. Arsitektur & Teknologi

Komponen Teknologi
Backend & Web UI Laravel 12 (PHP 8.2+), Blade Templating
Auth & RBAC Laravel Breeze + Spatie Permission
Database MySQL 8.0+
CSS Framework Tailwind CSS
Build Tool Vite
Localization Laravel Localization (ID & EN)
API (Fase lanjutan) Laravel Sanctum

3. Sistem Role (3 Level Akses)

Perbedaan dari sistem existing: Kita menambahkan role Administrator yang tidak ada di ptsp.halal.go.id

3.1 Role: Administrator (BARU)

Modul Fitur
Dashboard Statistik global: total pengajuan, UMKM terdaftar, fasilitator aktif, sertifikat terbit. Charts & grafik.
Manajemen User CRUD semua user, assign/ubah role, aktivasi/deaktivasi akun
Manajemen Role & Permission Kelola role dan permission via Spatie
Manajemen Jenis Sertifikasi CRUD jenis sertifikasi (Self Declare Mandiri, Self Declare, Reguler, SHLN)
Verifikasi & Approval Review final pengajuan, terbitkan sertifikat, set nomor sertifikat
Manajemen Fasilitator Lihat, verifikasi, dan kelola data semua fasilitator
Manajemen Pelaku Usaha Lihat, verifikasi, dan kelola data semua pelaku usaha
Laporan & Ekspor Laporan pengajuan, statistik per wilayah, export Excel/PDF
Activity Log Log semua aktivitas user di sistem
Pengaturan Sistem Konfigurasi umum aplikasi (nama, logo, kontak, dll)

3.2 Role: Fasilitator

Modul Fitur
Dashboard Statistik UMKM binaan, pengajuan pending, kuota tersisa
Profile Kelola profil fasilitator (nama, jenis, wilayah, PIC)
Daftar Fasilitas Lihat semua program fasilitasi & tracking kuota
Entri Fasilitas Buat program fasilitasi baru (nama, tahun, jenis, periode, kuota)
Inquiry Pencarian & review pengajuan UMKM dengan multi-filter + export Excel
Pembatalan Kelola permintaan pembatalan sertifikasi
Invoice Fasilitasi Lihat & kelola tagihan fasilitasi

3.3 Role: UMKM (Pelaku Usaha)

Modul Fitur
Dashboard Welcome page, langkah cepat, notifikasi
Profil Pelaku Usaha Kelola profil usaha (nama, alamat, perizinan, KBLI)
Pengajuan Self Declare Mandiri Pengajuan sertifikasi mandiri + kuesioner self-assessment
Pengajuan Self Declare Pengajuan self declare standar
Pengajuan Reguler Pengajuan sertifikasi reguler
Status Permohonan Tracking status semua pengajuan
Tagihan / Invoice Lihat tagihan & status pembayaran
Kalkulator Simulasi Simulasi biaya sertifikasi
Registrasi SHLN Pendaftaran sertifikat halal luar negeri

4. Database Design

Tabel yang Sudah Ada (dari migration saat ini)

Tabel Baru yang Dibutuhkan

-- Profil Fasilitator (terpisah dari users)
facilitators
├── id, user_id (FK → users)
├── name, type (jenis fasilitator)
├── address, province, city, district, postal_code
├── email, pic_name, pic_phone
└── timestamps

-- Program Fasilitasi
facilitation_programs
├── id, facilitator_id (FK → facilitators)
├── code (kode fasilitasi), name, year, type (reguler/self_declare)
├── start_date, end_date, quota, remaining_quota
├── status (draft/active/completed/cancelled)
└── timestamps

-- Jawaban Kuesioner Self Declare
self_declare_answers
├── id, submission_id (FK → certification_submissions)
├── question_key, answer, notes
└── timestamps

-- Tagihan / Invoice
invoices
├── id, submission_id (FK → certification_submissions)
├── invoice_number, va_number (Virtual Account)
├── amount, due_date, paid_at
├── status (pending/paid/overdue/cancelled)
├── invoice_file, type (sertifikasi/fasilitasi/shln)
└── timestamps

-- Dokumen Pendukung (Polymorphic)
documents
├── id, documentable_id, documentable_type
├── type (nib/permit/certificate/kbli/other)
├── name, file_path, file_size
├── uploaded_by (FK → users)
└── timestamps

-- Permintaan Pembatalan
cancellation_requests
├── id, submission_id (FK → certification_submissions)
├── requested_by (FK → users), reason
├── status (pending/approved/rejected)
├── processed_by (FK → users), processed_at
└── timestamps

Update Tabel Existing

-- Update: businesses (tambah kolom)
+ nib_file (path file NIB)
+ country (negara, default: Indonesia)
+ kbli_code, kbli_name
+ permit_number, permit_issuer, permit_name

-- Update: certification_submissions (tambah kolom)
+ facilitation_program_id (FK → facilitation_programs)
+ type ENUM('self_declare_mandiri', 'self_declare', 'reguler', 'shln')
+ product_type, product_name
+ funding_source (sumber pembiayaan)
+ shln_number (untuk tipe SHLN)
+ renewal_of (FK → self, untuk perpanjangan)
+ registration_number (nomor pendaftaran/daftar)
+ verified_at, verified_by

5. Alur Pengajuan Sertifikasi

UMKM                          FASILITATOR                    ADMINISTRATOR
─────                          ───────────                    ─────────────
1. Lengkapi Profil Usaha
2. Pilih Jenis Pengajuan
   ├── Self Declare Mandiri
   │   └── Isi Kuesioner
   ├── Self Declare
   ├── Reguler
   └── SHLN
3. Isi Data Produk & Bahan
4. Upload Dokumen
5. Submit Pengajuan
   │
   ├── [status: submitted] ──→ 6. Review & Verifikasi
   │                              ├── Setujui (verified)
   │                              ├── Minta Revisi (needs_revision)
   │                              └── Tolak (rejected)
   │
   │   ← [needs_revision] ────── Perbaiki & Submit Ulang
   │
   │                              │ [verified] ──→ 7. Approval Final
   │                              │                   ├── Approve (approved)
   │                              │                   └── Reject (rejected)
   │                              │
   │                              │               8. Terbitkan Sertifikat
   │                              │                   └── [certified]
   │                              │                       ├── Nomor Sertifikat
   │                              │                       ├── Masa Berlaku
   │                              │                       └── File Sertifikat
   │
   └── 9. Lihat Status & Download Sertifikat

10. Terima Invoice
11. Lakukan Pembayaran

6. Fase Pengembangan (Roadmap)

Fase 1: Foundation & Auth ✅ (Sebagian sudah selesai)

Fase 2: Modul UMKM (Pelaku Usaha)

Fase 3: Modul Fasilitator

Fase 4: Modul Administrator (BARU)

Fase 5: Polish & Testing


7. Struktur File Project (Target)

halal_web/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Admin/
│   │   │   │   ├── DashboardController.php
│   │   │   │   ├── UserController.php
│   │   │   │   ├── CertificationTypeController.php
│   │   │   │   ├── VerificationController.php
│   │   │   │   ├── FacilitatorController.php
│   │   │   │   ├── BusinessController.php
│   │   │   │   ├── ReportController.php
│   │   │   │   ├── ActivityLogController.php
│   │   │   │   └── SettingController.php
│   │   │   ├── Facilitator/
│   │   │   │   ├── DashboardController.php
│   │   │   │   ├── ProfileController.php
│   │   │   │   ├── FacilitationController.php
│   │   │   │   ├── InquiryController.php
│   │   │   │   ├── CancellationController.php
│   │   │   │   └── InvoiceController.php
│   │   │   ├── Umkm/
│   │   │   │   ├── DashboardController.php
│   │   │   │   ├── BusinessProfileController.php
│   │   │   │   ├── SelfDeclareController.php
│   │   │   │   ├── RegularSubmissionController.php
│   │   │   │   ├── StatusController.php
│   │   │   │   ├── InvoiceController.php
│   │   │   │   ├── CalculatorController.php
│   │   │   │   └── ShlnController.php
│   │   │   └── Auth/
│   │   └── Middleware/
│   │       └── RoleMiddleware.php
│   └── Models/
│       ├── User.php
│       ├── Business.php
│       ├── Facilitator.php
│       ├── FacilitationProgram.php
│       ├── CertificationType.php
│       ├── CertificationSubmission.php
│       ├── Product.php
│       ├── Ingredient.php
│       ├── ProductionProcess.php
│       ├── SelfDeclareAnswer.php
│       ├── Invoice.php
│       ├── Document.php
│       ├── CancellationRequest.php
│       └── ActivityLog.php
├── resources/views/
│   ├── layouts/
│   │   ├── app.blade.php (main layout)
│   │   ├── sidebar.blade.php
│   │   ├── header.blade.php
│   │   └── footer.blade.php
│   ├── admin/
│   │   ├── dashboard.blade.php
│   │   ├── users/
│   │   ├── certifications/
│   │   ├── verification/
│   │   ├── reports/
│   │   └── settings/
│   ├── facilitator/
│   │   ├── dashboard.blade.php
│   │   ├── profile/
│   │   ├── facilitation/
│   │   ├── inquiry/
│   │   ├── cancellation/
│   │   └── invoice/
│   ├── umkm/
│   │   ├── dashboard.blade.php
│   │   ├── business/
│   │   ├── submissions/
│   │   ├── status/
│   │   ├── invoice/
│   │   ├── calculator/
│   │   └── shln/
│   ├── auth/
│   └── components/
├── routes/
│   ├── web.php
│   ├── admin.php
│   ├── facilitator.php
│   └── umkm.php
├── lang/
│   ├── id/
│   └── en/
└── database/
    ├── migrations/
    └── seeders/

8. Catatan Penting

Fitur yang TIDAK diimplementasi (integrasi pihak ketiga):

Akun Demo untuk Testing:

Role Email Password
Administrator admin@halal.go.id password123
Fasilitator priojava1@gmail.com Jokopurwanto87
UMKM suprianto2125@gmail.com Jokopurwanto87$

Appendix A: Master Plan Awal (Referensi Asli)

Catatan berikut adalah plan awal yang dibuat sebelum analisa sistem existing.
Dipertahankan sebagai referensi untuk keputusan arsitektur dan requirement keamanan/performa.

A.1 Arsitektur & Teknologi (Plan Awal)

A.2 Keamanan & Performa (Mandatory)

A.3 Roadmap Awal (4 Fase)

Fase 1: Setup, Analisa, dan Database Design

Fase 2: Core Backend & Web UI (Laravel Blade)

Fase 3: API & Mobile App (React Native)

Fase 4: Testing & Deployment

A.4 Catatan Perbedaan Plan Awal vs Plan Final

Aspek Plan Awal Plan Final
Laravel Version 11+ 12 (sesuai project saat ini)
Role SuperAdmin, Fasilitator, UMKM Administrator, Fasilitator, UMKM
Database Design 6 tabel dasar 14+ tabel (berdasarkan analisa sistem existing)
Fitur Detail Belum dispesifikasi Detail lengkap per modul per role
Mobile App React Native (Fase 3) Ditunda, fokus Web UI dulu
Keamanan CSRF, XSS, SQLi, Rate Limiting Sama + ditambahkan ke implementasi
Performa Redis caching & Queue Diimplementasi saat fase Polish

Terakhir diperbarui: 16 April 2026