XPrivate · admin-MVP-1 · Pricing admin — layout options A–D (base+override) ALIGNED rebuilt 2026-05-31
Pricing source-of-truth → admin-mvp-1-pricing-base-override.html · model = Base + Override cascade (SubjectLevel ?? Subject ?? Base) · Stack: React 19 + TanStack Start (SPA) · shadcn amber b1MJ9vRwY6

Pricing admin — 4 opsi layout (A–D)

Cara nampilin admin UI untuk model Base + Override. Layout decision untuk partner engineering — bukan model decision (model sudah final di file canonical).

Constraint sudah bergeser. Base matrix kecil: 15 Tingkat × 3 Segmentasi = ~45 baris (Tutor + Golongan = sub-view, bukan ledakan dimensi). Density bukan lagi musuh. Constraint baru = (1) discoverability override (admin tahu mana subject yang punya Harga Khusus tanpa buka satu-satu) + (2) kejelasan applicability (Tingkat mana yang di-offer per subject, default OFF).
Harga Dasar — Tingkat × Segmentasi (+Golongan), ~45 baris, subject-agnostic Harga Khusus (Override) — sparse, per subject, klik untuk override Applicability — is_offered per subject × Tingkat, default OFF Resolusi: SubjectLevel ?? Subject ?? Base

Catatan istilah: Tingkat (SD 1 … Profesional) ≠ SubjectLevel (jenjang internal mapel, mis. HSK 1–6) ≠ Kategori (grouping SD/SMP/SMA — pengelompokan, bukan dimensi harga).

A

Tabbed — 3 tab terpisah

Tab [Harga Dasar | Override | Applicability]. Tiap surface dapat halaman sendiri. ≈ pendekatan canonical sekarang.
Audiens:
SegmentasiSDSMPNon-sekolah
123789UmumProf
REG130rb135rb140rb170rb175rb180rb200rb220rb
REG+180rb185rb190rb220rb225rb230rb250rb270rb
INT230rb235rb240rb270rb275rb280rb300rb320rb
Tab "Override" & "Applicability" dipilih per subject (subject picker di dalam tab masing-masing).

Pros

  • Pemisahan jelas: 3 surface ≠ kecampur, 1 mental task per tab
  • Base subject-agnostic → wajar berdiri sendiri (di-set sekali)
  • Cocok pola canonical existing — minim re-arsitektur
  • Mudah deep-link per surface (?tab=override)

Cons

  • Cascade tak terlihat: override (tab 2) terputus visual dari base (tab 1) — admin tak lihat efek "inherit vs override" berdampingan
  • Discoverability override lemah — harus masuk tab + pilih subject dulu
  • Applicability di tab terpisah dari harga = gampang lupa toggle ON
★★★☆☆Cocok bila: surface jarang dilihat bareng; admin paham mental model 3-lapis sejak awal.
B

Master-detail — rail subject + detail harga

Daftar Mata Pelajaran di rail kiri (badge Override/Base). Klik subject → panel kanan tampil applicability + harga (inherit/override). Skala bagus untuk banyak subject.
Matematikabase
Tryout UTBK2 ovr
IELTS / TOEFL3 ovr
Bahasa Inggrisbase
Fisikabase
Coding Anak1 ovr
Tryout UTBKPROGRAM_KHUSUS
Ditawarkan ke 4 Tingkat · 2 Harga Khusus
SMA 10SMA 11SMA 12UmumSD 1Prof
SegSMA 10SMA 11SMA 12Umum
REG200rbbase205rbbase210rbbasebase 250rb250rb
INT300rbbase305rbbasebase 320rb300rb350rbbase
Rail badge = discoverability override sekali pandang. Subject "base" murni = nol kerja.

Pros

  • Discoverability override menang: rail badge ("2 ovr" / "base") = scan cepat subject mana yang dimodif
  • Skala mulus ke 50+ subject (rail scroll, detail stabil)
  • Applicability + harga 1 panel = konteks satu layar
  • Pola admin familiar (mail/Linear-style)

Cons

  • Base price perlu home sendiri (rail item "Harga Dasar" pinned, atau tab kecil di atas)
  • Tak bisa lihat 2 subject berdampingan (1 detail aktif)
  • Rail makan lebar di layar sempit
★★★★☆Kuat untuk discoverability.Cocok bila: banyak subject, override tersebar, "subject mana yang spesial?" = pertanyaan harian.
D

Single-scroll — base sticky + inline-expand per subject

Base matrix sticky di atas. Di bawahnya daftar subject; klik baris subject → expand inline (applicability + override) tanpa pindah halaman.
Harga Dasar (sticky)selalu terlihat
SegSMA 10SMA 11UmumProf
REG200rb205rb230rb250rb
INT300rb305rb330rb350rb
Matematikainherit base · 12 Tingkat · 0 override
Tryout UTBK2 Harga Khusus · 4 Tingkat di-offer
Ditawarkan ke:
SMA 10SMA 11SMA 12UmumProf
SegSMA 10SMA 11Umum
REG200rbbase205rbbasebase 230rb250rb
INTbase 300rb320rb305rbbase330rbbase
IELTS / TOEFL3 Harga Khusus · 5 Tingkat di-offer
Satu halaman, satu scroll. Base sticky tetap jadi rujukan saat expand subject mana pun.

Pros

  • Semua dalam 1 halaman, 1 scroll — tak ada nav antar-surface
  • Base sticky = rujukan konstan saat isi override per subject
  • Meta per baris ("2 Harga Khusus") = discoverability lumayan tanpa expand
  • Workflow "turun daftar subject satu-satu" terasa natural + ada rasa selesai

Cons

  • Banyak baris expanded sekaligus = halaman panjang, mudah tersesat
  • Compare 2 subject = scroll bolak-balik (vs B yang stabil)
  • Base sticky makan ruang vertikal di layar pendek
  • Tanpa expand, harga per subject tak terlihat (cuma meta)
★★★★☆Cocok bila: subject sedikit (<20) & workflow utama = "sapu semua subject sekali jalan" tanpa lompat halaman.

Q3 — Navigasi surface: breadcrumb vs tab vs chip

3

Cara pindah antar Harga Dasar / Override / Applicability

Reframe dari diskusi lama (audience switch) ke switch surface base+override. Trade-off mental model sama: breadcrumb = sinyal navigasi, tab/chip = toggle view.
OPSI (a) — Chip toggle, breadcrumb tanpa surface
Harga / IELTS / TOEFL
OPSI (b) — Breadcrumb-as-nav (terlihat prominent)
Harga / Override ▾ / IELTS / TOEFL
Klik "Override ▾" = dropdown pindah ke Base/Applicability. Tapi breadcrumb biasanya = navigate, bukan toggle → mental clash.
OPSI (c) — Tab style (kompromi, "berasa breadcrumb" tapi benar)
Harga / IELTS / TOEFL

Analisis

  • (a) Chip = paling clean, tapi surface kurang prominent
  • (c) Tab = sweet spot. Terlihat seperti section nav (berasa breadcrumb-ish), tapi semantically = view toggle yang benar. Pola Stripe/Linear. Label eksplisit "Harga Dasar / Override / Applicability" = jelas beda surface.
  • Catatan split-view (Opsi C layout): kalau pakai split-view, tab base/override jadi tak perlu — keduanya sudah satu frame. Tab cuma relevan untuk layout Tabbed (A) atau Master-detail (B).

Kenapa bukan (b) breadcrumb

  • Breadcrumb = "lokasi saya di mana" (navigate). Toggle surface di breadcrumb bikin admin expect klik = pindah halaman, bukan switch view.
  • Nielsen #4 consistency: level breadcrumb harus = hierarki nav, bukan filter/mode.
  • Tapi (c) tab kasih feel breadcrumb-prominence tanpa mental clash.
★★★★☆Rekomendasi: (c) Tab style— hanya bila layout butuh switch surface sama sekali.Confidence ~80%.

Anti-fatigue — masih relevan, reframe untuk base + override

🧠 Beban kini geser: base sekali isi, override yang berulang

Base ~45 sel di-set sekali (kerja ringan). Beban nyata = atur applicability + override per subject untuk puluhan subject. 6 mekanisme checkpoint + reduce-entry, di-reframe ke model baru.

1Autosave per sel

Sel base atau override blur → debounce 500ms → tersimpan otomatis. Tanpa tombol "Simpan semua" + cemas kehilangan kerja. Toast Sonner konfirmasi tiap simpan.

2Dirty-cue + indikator override

Sel yang diubah (belum publish) bertanda titik. Hitung override per subject ("3 Harga Khusus") = momentum + discoverability tanpa buka detail.

3Bulk fill + preset applicability

Preset Tingkat ("SD–SMA", "SMA + Umum"), "Samakan ke base" (hapus semua override → balik inherit), %-bump pada override. Kurangi entry — mayoritas subject cukup inherit.

4Draft vs Publish

Override & applicability digarap di draft — tak live sampai "Publikasikan". Subject setengah-jadi tak nyentuh production. Bisa garap bertahap tanpa takut salah live.

5Default OFF + opt-in jelas

Applicability default OFF → admin hanya nyalakan Tingkat yang relevan, tak isi sel yang tak ditawarkan. Mengecilkan permukaan kerja secara struktural.

6Resume checkpoint

Buka lagi → "Terakhir diedit: IELTS · INT · Prof. [Lanjut dari sini]". Tak perlu ingat berhenti di mana saat sapu banyak subject.

💡 Bonus: Copy dari subject mirip

Saat bikin subject baru, tawarkan "Salin override + applicability dari subject serupa" (mis. Mandarin baru ← struktur Inggris). Head-start, tak mulai dari kosong.

Tersimpan otomatis · IELTS: 3 Harga Khusus · 5 Tingkat di-offer
Draft · terakhir 14:32 WIB

🎯 Rekomendasi