Kementerian Agama Republik Indonesia
Kabupaten Jember — Jawa Timur
AMANAH
Administrasi Manajemen Arsip Handal

"Amanah dalam data, tertib dalam administrasi, dan terpercaya dalam pelayanan digital modern."

🛡
Aman
Cepat
Modern
🤖
AI OCR
© 2026 Kementerian Agama RI — Kabupaten Jember
Selamat Datang di
AMANAH
Masuk untuk melanjutkan ke sistem administrasi
Sistem aktif · Supabase Auth + PostgreSQL + Storage
Dashboard
AMANAH › Dashboard
Kemenag Kab. Jember
AKTIF
📋
0
Register Nikah
AKTIF
🎓
0
Arsip Ijazah
31+20
🏢
51
Satuan Kerja
ONLINE
👤
0
Operator Aktif

📋 Register Nikah Terbaru

No AktaSuamiIstriKUA

🎓 Ijazah Terbaru

No IjazahNama SiswaMadrasahTh

📋 Daftar Register Nikah

0 data
#Nomor AktaTanggalSuamiIstriKUAStatusAksi

🎓 Arsip Ijazah Madrasah Negeri

0 data
#No IjazahNama SiswaMadrasahJenjangLulusStatusAksi

🕌 KUA Kabupaten Jember

#Nama Satuan KerjaKodeOp.Total DokStatusAksi

👤 Manajemen Operator & Akses

#NamaEmailSatuan KerjaRoleStatusAksi

Masukkan hash SHA-256 atau nomor akta/ijazah
untuk memverifikasi keaslian dokumen dalam sistem AMANAH

📷 Scan & OCR Dokumen

📄
Drag & drop file scan Register Nikah di sini
atau klik untuk pilih file
Format: PDF · JPG · PNG
⚠️ Panduan teknis untuk developer. Pastikan memiliki akun Google, akun Firebase, dan Node.js terinstal.

1 Buat Project Firebase

aBuka console.firebase.google.com → klik "Add project"
bNama project: amanah-kemenag-jember → lanjutkan
cDi dashboard → klik ikon Web (</>) → Register app → salin firebaseConfig

2 Aktifkan Layanan Firebase

aAuthentication: Sign-in method → aktifkan Google + Email/Password
bFirestore: Create database → Production mode → Region: asia-southeast2 (Jakarta)
cStorage: Get Started → region sama → struktur folder: nikah/ ijazah/ temp/

3 Inisialisasi SDK

// Terminal — install dependencies
npm install firebase

// src/firebase.js — konfigurasi utama
import { initializeApp } from "firebase/app";
import { getAuth, GoogleAuthProvider } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
import { getStorage } from "firebase/storage";

const firebaseConfig = {
  apiKey:            "AIzaSy...",           // dari Firebase Console
  authDomain:        "amanah-kemenag-jember.firebaseapp.com",
  projectId:         "amanah-kemenag-jember",
  storageBucket:     "amanah-kemenag-jember.appspot.com",
  messagingSenderId: "123456789",
  appId:             "1:123456789:web:abc123"
};

const app = initializeApp(firebaseConfig);
export const auth           = getAuth(app);
export const db             = getFirestore(app);
export const storage        = getStorage(app);
export const googleProvider = new GoogleAuthProvider();

4 Fungsi Auth & CRUD

// Login Google
export async function loginGoogle() {
  const res     = await signInWithPopup(auth, googleProvider);
  const userDoc = await getDoc(doc(db, "users", res.user.uid));
  return { user: res.user, role: userDoc.data()?.role || "viewer" };
}

// Simpan Register Nikah + hash otomatis
export async function saveRegisterNikah(data) {
  const hash = await sha256(JSON.stringify(data));
  return await addDoc(collection(db, "registerNikah"), {
    ...data, hash,
    status:    "terverifikasi",
    createdAt: serverTimestamp(),
    createdBy: auth.currentUser.uid
  });
}

// SHA-256 native browser (tanpa library tambahan)
export async function sha256(text) {
  const buf = await crypto.subtle.digest("SHA-256",
    new TextEncoder().encode(text));
  return "sha256:" + [...new Uint8Array(buf)]
    .map(b => b.toString(16).padStart(2,"0")).join("");
}

5 Security Rules Firestore

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    function isAuth()   { return request.auth != null; }
    function role()     { return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role; }
    function satker()   { return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.satker; }
    function isAdmin()  { return role() == "kabupaten"; }

    match /registerNikah/{id} {
      allow read: if isAuth();
      allow create, update: if isAuth() && (isAdmin() ||
        (role() == "kua" && request.resource.data.kua == satker()));
      allow delete: if isAdmin();
    }
    match /ijazah/{id} {
      allow read: if isAuth();
      allow create, update: if isAuth() && (isAdmin() ||
        (role() == "madrasah" && request.resource.data.madrasah == satker()));
      allow delete: if isAdmin();
    }
    match /users/{uid} {
      allow read:  if isAuth();
      allow write: if isAdmin() || request.auth.uid == uid;
    }
  }
}

📋 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: