Rapor Tahfiz Digital

Data & Integrasi Backend Rapor Tahfidz Digital

(Cloudflare D1 · Migrasi GitHub JSON · Struktur Data · API Workers · Backup Google Drive)

Backend Rapor & Mutaba’ah Tahfidz Digital dirancang agar ringan, aman, dan hemat biaya, tanpa mengorbankan fleksibilitas. Di bawah ini penjelasan lengkap arsitektur data, alur migrasi, struktur JSON, endpoint API, hingga otomasi backup ke Google Drive.


1) Penyimpanan Data di Cloudflare D1 (Free 5 GB)

Kenapa D1?

Tip operasional:


2) Migrasi dari GitHub JSON

(skema lama: “kelas per tanggal” → skema baru: “per kelas”)

Sebelumnya data disimpan per-hari/per-tanggal (mis. kelas_012526_2025-09-10.json). Skema baru mengonsolidasikan data per kelas agar:

Alur migrasi ringkas:

  1. Ekstrak semua file JSON lama.
  2. Mapping ke struktur baru per kelas (gabungkan seluruh tanggal).
  3. Normalisasi field (pastikan konsisten: nis, tanggal, statusHadir, markNilai, dsb.).
  4. Import batch ke D1 (tabel transaksi + snapshot).
  5. Verifikasi sampling (cek 3–5 kelas acak; bandingkan total per bulan sebelum/sesudah).

Hasil: akses data jadi serba per kelas (logis untuk tampilan guru), sementara filter tanggal/semester tetap tersedia via query.


3) Struktur Data JSON (records, meta, marks, buttonCell)

Aplikasi tetap memakai JSON sebagai “bahasa antar-layer” (UI ↔ API). Empat grup kunci yang umum:

Catatan penting:


4) API Berbasis Cloudflare Pages/Workers

API bersifat stateless, cepat, dan aman menggunakan environment bindings. Empat endpoint utama:

a) /api/getUsers

Mengambil daftar user + peran (Admin, User Kelas/Halaqoh, User NIS).
Contoh respons ringkas:

{
  "meta": { "count": 12, "generatedAt": "2025-10-31T08:30:00Z" },
  "records": [
    { "username":"admin01","role":"Admin","kelas":[] },
    { "username":"guru9a","role":"UserKelas","kelas":["9A"] },
    { "username":"wali110234","role":"UserNIS","nis":["110234"] }
  ]
}

Kegunaan: otorisasi tampilan (filter kelas/NIS sesuai role).


b) /api/ambilSantri

Mengambil daftar santri + profil ringkas (kelas aktif, NIS, jenjang).
Query umum: ?kelas=9A atau ?nis=110234
Contoh respons ringkas:

{
  "meta": { "kelas":"9A", "count": 32 },
  "records": [
    { "nis":"110234","nama":"Ahmad","jenjang":"SMP","semester":5 },
    { "nis":"110235","nama":"Aisyah","jenjang":"SMP","semester":5 }
  ]
}

Kegunaan: memuat daftar awal untuk absensi/penilaian.


c) /api/getAbsensiRange

Mengambil absensi rentang tanggal (harian → mingguan → bulanan).
Query: ?kelas=9A&from=2025-10-01&to=2025-10-31
Catatan: gunakan indeks (kelas, tanggal) di D1 agar cepat.
Contoh respons ringkas:

{
  "meta": { "kelas":"9A","from":"2025-10-01","to":"2025-10-31" },
  "records": [
    { "tanggal":"2025-10-01","nis":"110234","sesi":{"1":"Hadir","2":"Hadir",...} },
    ...
  ],
  "agg": {
    "hadirPctKelas": 92.5,
    "topAlpha": ["110245","110251"]
  }
}


d) /api/pindahKelasMulaiTanggal

Memindahkan santri ke kelas baru dengan batas tanggal agar riwayat tetap utuh.
Payload ringkas:

{
  "nis": "110234",
  "kelasBaru": "9B",
  "mulaiTanggal": "2025-11-01"
}

Perilaku:

Keamanan & praktik baik untuk semua endpoint:


5) Backup Otomatis ke Google Drive (CSV, 15 GB)

Setiap bulan, sistem membuat backup .csv ke Google Drive (kuota gratis 15 GB):

Keuntungan:


Arsitektur Ringkas (Alur Data)

  1. UI (index.html) → kirim permintaan (ambil santri, simpan absensi/hafalan).
  2. API Workers → validasi role, proses query/commit ke D1.
  3. D1 → simpan transaksi + attendance_snapshot (rekap siap pakai).
  4. Jobs bulanan → ekspor CSV → upload ke Google Drive.
  5. Dashboard → tampilkan agregasi per kelas/semester dari snapshot agar cepat dan hemat kuota.

Best Practice Implementasi

Aplikasi Rapor Tahfiz mendukung berbagai bahasa dunia, termasuk mode RTL (Right-to-Left) untuk bahasa Arab:

Bahasa siap pakai / siap konfigurasi:

Teknis singkat i18n:

Cocok untuk: SD/MI, SMP/MTs, SMA/MA, Rumah Tahfidz, dan Pesantren.

Paket & Harga (contoh—silakan sesuaikan)

Cara Pemesanan (3 langkah cepat)

Hubungi kami

Estimasi waktu implementasi: 1–3 hari kerja (tergantung jumlah kelas & import data).

Apa yang Anda Dapatkan

Metode Pembayaran

Garansi & Kebijakan

raportahfiz Avatar

Diposkan oleh:

Tinggalkan komentar