3
Kurikulum Pemula
Halaman /pemula menyusun 39 praktik menjadi 4 bagian, mulai dari pengenalan huruf tunggal sampai ujian membaca mushaf. Jumlah total disimpan pada satu konstanta PRACTICE_TOTAL, sedangkan pembagiannya disimpan sebagai array parts berisi count 7, 11, 11, dan 10. src/lib/practice-curriculum.ts:1-21 src/lib/practice-curriculum.ts:42 src/lib/practice-curriculum.ts:6-273
graph TD
parts["parts: count 7 / 11 / 11 / 10"] --> reduce["reduce → from dan to"]
reduce --> g1["Bagian 1: latihan 1–7"]
reduce --> g2["Bagian 2: latihan 8–18"]
reduce --> g3["Bagian 3: latihan 19–29"]
reduce --> g4["Bagian 4: latihan 30–39"]
g1 --> t1["Pengenalan huruf"]
g2 --> t2["Huruf sambung, kata, dan mad"]
g3 --> t3["Sukun, tasydid, dan lam ta'rif"]
g4 --> t4["Menuju mushaf"]
t4 --> goal["Membaca surah pendek dari mushaf"]
style parts fill:#f59e0b,color:#000
style reduce fill:#f59e0b,color:#000
style g1 fill:#8b5cf6,color:#fff
style g2 fill:#8b5cf6,color:#fff
style g3 fill:#8b5cf6,color:#fff
style g4 fill:#8b5cf6,color:#fff
style goal fill:#2d7d46,color:#fff
%% fig: Empat bagian kurikulum pemula dan targetnya
%% desc: Jumlah praktik per bagian diubah menjadi rentang nomor, lalu setiap rentang membawa target bacaan sampai target terakhir membaca surah pendek dari mushaf.| Bagian | Nomor latihan | Jumlah | Berkas data | Praktik penutup |
|---|---|---|---|---|
| 1 · Pengenalan huruf | 1–7 | 7 | src/data/praktik-dasar.ts | Harakat, Tanwin, dan Huruf Mirip |
| 2 · Huruf sambung, kata, dan mad | 8–18 | 11 | src/data/praktik-bagian-2.ts | Pendek atau Panjang |
| 3 · Sukun, tasydid, dan lam ta'rif | 19–29 | 11 | src/data/praktik-bagian-3.ts | Ulangan Bagian 3 |
| 4 · Menuju mushaf | 30–39 | 10 | src/data/praktik-bagian-4.ts | Ujian Membaca Mushaf |
Nomor bagian dihitung dari count
practiceParts tidak menyimpan nomor awal dan akhir. Array parts hanya memuat title, target, dan count; fungsi map menjumlahkan count bagian sebelumnya untuk mendapat from, lalu menetapkan to = from + count - 1. src/lib/practice-curriculum.ts:31-344
practicePart(number) mengembalikan bagian pertama yang nilai to-nya masih menampung nomor itu. Nomor di luar rencana tetap jatuh ke bagian terakhir karena ada fallback practiceParts[practiceParts.length - 1]. src/lib/practice-curriculum.ts:36-395
groupByPart(practices) memotong daftar praktik dengan slice(part.from - 1, part.to), kecuali bagian terakhir yang dibiarkan terbuka sampai ujung array. Setiap item yang dihasilkan tetap membawa nomor praktiknya sendiri. src/lib/practice-curriculum.ts:42-496
Urutan praktik berasal dari listLessons("praktik"). Array dari keempat berkas data digabung lalu diurutkan dengan byPosition, sehingga position menentukan nomor latihan. Praktik pertama memakai position: 10 dan praktik terakhir memakai position: 390. src/lib/lessons.ts:20-257 src/data/praktik-dasar.ts:46-518 src/data/praktik-bagian-4.ts:251-2599
Bagian 1 · Pengenalan huruf (1–7)
Bagian 1 berisi 7 praktik pendek sekitar 10–15 menit, masing-masing dengan latihan A, B, C, dan latihan terakhir disetor ke guru. Baris latihannya disalin dari buku latihan bagian 1. src/data/praktik-dasar.ts:1-310
Seluruh isi praktik dibentuk oleh helper practice(). Paragraf guide menjadi petunjuk, lalu setiap exercises menghasilkan satu label dan blok latihan; latihan tanpa rows hanya ditampilkan sebagai label. src/data/praktik-dasar.ts:25-4411
Bagian 2 · Huruf sambung, kata, dan mad (8–18)
Bagian 2 melanjutkan ke bentuk huruf sambung, kata dua sampai empat huruf, dan tiga jenis mad. Berkasnya sengaja belum memakai sukun dan tasydid; sebagian baris awal berupa suku kata tanpa arti karena tujuannya latihan membaca, bukan kosakata. src/data/praktik-bagian-2.ts:1-412
⚠️ Jangan menambahkan contoh bersukun atau bertasydid ke Bagian 2. Kedua tanda itu baru masuk di Bagian 3.
Bagian ini ditutup oleh praktik "Pendek atau Panjang" yang membandingkan pasangan bacaan pendek dan panjang sebelum murid naik ke bagian berikutnya. src/data/praktik-bagian-2.ts:248-25213
Bagian 3 · Sukun, tasydid, dan lam ta'rif (19–29)
Bagian 3 memperkenalkan sukun, qalqalah, huruf lin, tasydid, lam ta'rif, lafzhul jalalah, hamzah washal, dan huruf yang ditulis tetapi tidak dibaca. Contohnya dipilih agar nun sukun, tanwin, dan mim sukun tidak bertemu huruf pemicu idgham, iqlab, atau ikhfa, karena hukum itu baru diajarkan di Bagian 4. src/data/praktik-bagian-3.ts:1-414
Praktik penutupnya, "Ulangan Bagian 3", menggabungkan semua kaidah bagian ini. Latihan B-nya adalah ayat Al-Qur'an pertama yang dibaca langsung, dan penghentian di akhir ayat dibaca sukun. src/data/praktik-bagian-3.ts:252-25915
Bagian 4 · Menuju mushaf (30–39)
Bagian 4 memuat hukum nun sukun dan tanwin, mim sukun, mad far'i, hukum ra, dan waqaf. Contoh latihannya diambil dari lafaz Al-Qur'an, sebagian dipotong dari ayat agar fokus pada satu hukum, dan ditutup dengan ujian membaca mushaf. src/data/praktik-bagian-4.ts:1-416
Praktik terakhir, "Ujian Membaca Mushaf", membaca Al-Fatihah dan lima surah pendek langsung dari mushaf. Dua latihan terakhirnya tidak punya baris latihan, jadi hanya labelnya yang tampil. src/data/praktik-bagian-4.ts:276-28317 src/data/praktik-bagian-4.ts:251-2599
Bagian ditampilkan di halaman Pemula
Halaman /pemula mengiterasi groupByPart(practices) dan mencetak kepala bagian dalam bentuk "Bagian {number} · Latihan {from}–{to}", diikuti judul dan target bagian. src/app/pemula/page.tsx:41-5118
Teks pengantarnya menyebut angka yang sama dengan konstanta: {PRACTICE_TOTAL} latihan dalam {practiceParts.length} bagian. src/app/pemula/page.tsx:35-3619
Jika sebuah bagian belum punya praktik terbit, halaman menampilkan kartu "Latihan bagian ini sedang disiapkan. Silakan kembali lagi nanti." dan bukan daftar kosong. src/app/pemula/page.tsx:82-8520
Saat satu latihan dibuka, kepala lembar latihan mencetak nomor dan bagiannya, misalnya "Latihan 12 / 39 · Bagian 2: Huruf sambung, kata, dan mad". Nomor bagian di situ juga berasal dari practicePart(number). src/components/practice/practice-sheet.tsx:118-12021
Rangkaian berkas data, helper practice(), dan cara halaman membaca content dibahas di Alur Konten Pelajaran. Kelas lanjutan setelah 39 praktik ini dibahas di Kurikulum Lanjutan, sedangkan centang latihan yang tersimpan di perangkat dibahas di Progres Belajar di Perangkat.
Test kurikulum mengunci pembagian ini: rentangnya [[1, 7], [8, 18], [19, 29], [30, 39]], nomor 45 tetap masuk bagian 4, dan jumlah item per bagian adalah [7, 11, 11, 10]. tests/practice-curriculum.test.ts:9-2122 tests/practice-curriculum.test.ts:8223