AKTIF
0
Register Nikah
AKTIF
0
Arsip Ijazah
31+20
51
Satuan Kerja
ONLINE
0
Operator Aktif
📋 Register Nikah Terbaru
| No Akta | Suami | Istri | KUA |
|---|
🎓 Ijazah Terbaru
| No Ijazah | Nama Siswa | Madrasah | Th |
|---|
📋 Daftar Register Nikah
0 data| # | Nomor Akta | Tanggal | Suami | Istri | KUA | Status | Aksi |
|---|
🎓 Arsip Ijazah Madrasah Negeri
0 data| # | No Ijazah | Nama Siswa | Madrasah | Jenjang | Lulus | Status | Aksi |
|---|
🕌 KUA Kabupaten Jember
| # | Nama Satuan Kerja | Kode | Op. | Total Dok | Status | Aksi |
|---|
👤 Manajemen Operator & Akses
| # | Nama | Satuan Kerja | Role | Status | Aksi |
|---|
Masukkan hash SHA-256 atau nomor akta/ijazah
untuk memverifikasi keaslian dokumen dalam Sistem Aplikasi Pemberkasan Arsip Digital (SIPADI)
📷 Scan & OCR Dokumen
Drag & drop file scan Register Nikah di sini
atau klik untuk pilih file
atau klik untuk pilih file
Format: PDF · JPG · PNG
⚠️ Panduan teknis untuk developer. Pastikan memiliki akun Cloudflare dan Node.js terinstal (untuk Wrangler CLI).
1 Buat Worker, D1, dan R2
aInstall Wrangler: npm install -g wrangler lalu wrangler login
bBuat database D1: wrangler d1 create sipadi-db → salin database_id ke wrangler.toml
cBuat bucket R2: wrangler r2 bucket create sipadi-arsip → aktifkan akses publik via r2.dev atau custom domain
2 Skema Tabel D1
-- wrangler d1 execute sipadi-db --file=schema.sql CREATE TABLE users ( id TEXT PRIMARY KEY, email TEXT UNIQUE, password_hash TEXT, nama TEXT, role TEXT, satker TEXT, status TEXT DEFAULT 'aktif' ); CREATE TABLE register_nikah ( id TEXT PRIMARY KEY, no_akta TEXT, no_pmrk TEXT, tgl_nikah TEXT, nama_suami TEXT, nik_suami TEXT, nama_istri TEXT, nik_istri TEXT, kua TEXT, file_url TEXT, created_by TEXT, created_at TEXT ); CREATE TABLE ijazah ( id TEXT PRIMARY KEY, no_ijazah TEXT, nama_siswa TEXT, nisn TEXT, madrasah TEXT, jenjang TEXT, file_url TEXT, created_by TEXT, created_at TEXT ); CREATE TABLE pegawai ( id TEXT PRIMARY KEY, nama TEXT, nip TEXT, satker TEXT, jabatan TEXT, status TEXT );
3 Endpoint Worker (Auth & CRUD)
// src/index.js — Worker utama, route ke D1 + R2
export default {
async fetch(req, env) {
const url = new URL(req.url);
if (url.pathname === '/auth/login' && req.method === 'POST') {
const { email, password } = await req.json();
const user = await env.DB.prepare(
'SELECT * FROM users WHERE email = ?'
).bind(email).first();
if (!user || !(await verifyPassword(password, user.password_hash)))
return Response.json({ error: 'Email atau password salah' }, { status: 401 });
const token = await signToken(user); // JWT sederhana via Web Crypto
return Response.json({ token, user: { id: user.id, nama: user.nama, role: user.role, satker: user.satker } });
}
if (url.pathname === '/nikah' && req.method === 'GET') {
const auth = await requireAuth(req, env);
if (!auth) return Response.json({ error: 'Unauthorized' }, { status: 401 });
const { results } = await env.DB.prepare('SELECT * FROM register_nikah').all();
return Response.json(results);
}
// ... endpoint lain: /ijazah, /pegawai, /operators, /verify/:hash, dst.
return new Response('Not found', { status: 404 });
}
};
4 Upload File ke R2
// Worker — terima file dan simpan ke R2
if (url.pathname.startsWith('/upload/') && req.method === 'PUT') {
const auth = await requireAuth(req, env);
if (!auth) return Response.json({ error: 'Unauthorized' }, { status: 401 });
const key = url.pathname.replace('/upload/', '');
await env.ARSIP_BUCKET.put(key, req.body, {
httpMetadata: { contentType: req.headers.get('Content-Type') || 'application/octet-stream' }
});
return Response.json({ url: `${env.R2_PUBLIC_URL}/${key}` });
}
5 Deploy Worker
aBind D1 dan R2 di wrangler.toml (lihat dokumentasi Cloudflare Workers untuk format binding terbaru)
bDeploy: wrangler deploy → salin URL Worker ke WORKER_URL di frontend
cSet secret produksi (NIK_SECRET, dll) lewat wrangler secret put NAMA_SECRET, jangan hardcode di kode Worker
📋 Statistik Nikah per KUA
🎓 Statistik Ijazah per Madrasah
💾 Backup & Export Data
Data tersimpan aman di perangkat Anda📋 Register Nikah
Export semua data akta nikah ke CSV
🎓 Arsip Ijazah
Export semua data ijazah ke CSV
👔 Data Pegawai
Export semua data kepegawaian
📦 Backup Lengkap
Semua data dalam satu file JSON
💡 Jadwal Backup: Lakukan backup minimal 1x seminggu. Simpan di Google Drive atau email ke admin. Backup terakhir: —