checklist alur dari “belum” → “finish (1.0)

Saya sudah cek struktur GoScribe v0.4.34 (block-suite) dari ZIP terakhir. Kondisinya: UI/fitur inti sudah “jalan” tapi masih dominan file-based, dan ada beberapa komponen yang masih stub / belum ada untuk status “CMS full terintegrasi (DB + mail + cron/queue + API)”.

Di bawah ini checklist alur dari “belum” → “finish (1.0)” yang paling realistis dan minim ngulang kerja.

Audit cepat v0.4.34 (status sekarang)

✅ Sudah ada & relatif solid

Router single entry: index.php + .htaccess (rewrite + blocking file sensitif)

Admin panel (registry menu/pages) via gm-admin/admin.php + theme modern

Auth + CSRF + throttle login: gm-includes/auth.php

RBAC dasar: gm-includes/roles.php

Posts/Pages/Media/Settings/Mail berjalan (file-based JSON): gm-includes/posts.php, pages.php, media.php, options.php, mail.php

Plugin & theme manager (upload zip + safe extract): gm-includes/plugins.php, themes.php

REST API ada tapi masih skeleton: gm-includes/rest-api/server.php

Cron endpoint masih stub: gm-cron.php

⚠️ Gap besar untuk “full CMS”

Belum ada installer (wizard install + lock install)

Belum ada DB layer (PDO wrapper + schema + migrasi) → masih JSON di gm-admin/data/

Cron/Queue belum nyata (scheduler/worker)

REST API belum ada routing + auth + resource endpoints

Users admin masih read-only: gm-admin/users.php

Hooks baru add_action/do_action (belum ada filter/remove_action, dll): gm-includes/hooks.php

Ada duplikasi folder: gm-content/ vs content/ (perlu dirapikan governance-nya)

Checklist alur dari sekarang sampai “Finish 1.0”
Phase 0 — Rapikan fondasi (wajib, cepat)

⬜ 0.1 Tegaskan folder standar (pilih satu):

Tetapkan hanya content/ untuk themes/plugins/uploads

Putuskan gm-content/ mau dipakai apa (cache drop-in) atau dibuang (sekarang isinya cache stub)

⬜ 0.2 Auto-create & proteksi folder runtime

Saat bootstrap, pastikan dibuat:

content/uploads/ + .htaccess block php + index.php

gm-admin/data/ + gm-admin/logs/ (sudah, tapi pastikan permission check)

⬜ 0.3 Konsisten “asset cache busting”

Versi CSS/JS admin pakai query ?v=GM_VERSION (biar update nggak ketahan cache)

Phase 1 — Installer (biar “siap pakai” seperti WP)

⬜ 1.1 Buat folder /install/ + step wizard (min 4 step)

Welcome

Setup DB (test koneksi)

Setup Admin (buat admin pertama)

Setup Site (title, email, timezone, permalink)

Success + “lock install”

⬜ 1.2 Generate config real

gm-config.php sekarang placeholder → installer harus menulis: DB creds, keys/salt, base_url, env flags

Tambah install lock (mis. gm-admin/data/installed.lock)

Router: kalau belum installed → redirect ke /install/

⬜ 1.3 Hardening pasca-install

Auto generate .htaccess tambahan untuk folder sensitif (uploads/plugins/themes sudah ada sebagian)

Phase 2 — DB Core (ini yang bikin semua modul “nyatu”)

⬜ 2.1 Buat gm-includes/db.php (PDO)

koneksi, prepared statements, error handling, logging (gm_log_query)

table prefix (mis. gm_) + charset collation

⬜ 2.2 Buat schema minimal (GoScribe 1.0)

gm_users, gm_usermeta

gm_posts, gm_postmeta (pos+halaman satu tabel beda post_type)

gm_options (ganti settings.json)

gm_terms, gm_term_taxonomy, gm_term_relationships

gm_media (atau attachment model)

gm_jobs (queue) + gm_logs (audit trail)

⬜ 2.3 Migrator versi schema

simpan versi di gm_options (mis. db_version)

jalankan migration otomatis saat bootstrap/admin login

Phase 3 — Migrasi dari JSON → DB (tanpa bikin fitur pecah)

⬜ 3.1 Options: gm-includes/options.php

fallback: kalau gm_options ada → pakai DB, kalau tidak → file-based (sementara)

⬜ 3.2 Users: gm-includes/auth.php

pindahkan gm-admin/data/users.json → gm_users

sesuaikan login + reset password store

⬜ 3.3 Content: gm-includes/posts.php & pages.php

pindahkan gm-admin/data/content/posts.json/pages.json/categories.json/tags.json → DB

pastikan slug unique, excerpt generator tetap jalan

⬜ 3.4 Media library

metadata file minimal masuk DB (path, mime, size, created_at, owner)

Phase 4 — Operasional: Mail + Queue + Cron (biar produksi “waras”)

⬜ 4.1 Queue benar (bukan “tick per request” doang)

gm_jobs + worker mode (CLI atau cron http hit gm-cron.php)

mail send masuk queue, worker yang proses

⬜ 4.2 Cron real (gantikan stub gm-cron.php)

scheduler: run jobs (mail queue, cleanup tmp, rotate logs, cache purge)

⬜ 4.3 Admin UI untuk Mail (sebagian sudah ada)

test SMTP, log email, retry/backoff

Phase 5 — REST API (baru bisa disebut CMS modern)

⬜ 5.1 Routing API beneran (bukan echo JSON saja)

/api/v1/posts, /pages, /media, /users (admin)

auth: token/session-based + RBAC per endpoint

⬜ 5.2 Rate limit + audit log untuk endpoint sensitif

Phase 6 — Finishing “Enterprise-grade” (tanpa over-engineering)

⬜ 6.1 Users management full

CRUD user, assign role, reset password admin-side (gm-admin/users.php sekarang read-only)

⬜ 6.2 Hooks upgrade

tambah: add_filter/apply_filters, remove_action, has_action (plugin ecosystem lebih hidup)

⬜ 6.3 Backup/Restore

export DB + uploads (zip) + restore wizard

⬜ 6.4 Update system (opsional tapi “kelas CMS”)

core/theme/plugin update checker + checksum + rollback

Definition of Done (Finish 1.0)

CMS dianggap “selesai” kalau:

Install wizard jalan dari nol → login admin → bikin pos/halaman → upload media → tampil di frontend

Data tidak lagi bergantung ke JSON untuk core (users/posts/options minimal sudah DB)

Mail SMTP bisa test + queue jalan via cron

API v1 minimal posts/pages/media ada

Plugin/theme install/activate tidak bikin white screen (safe mode tetap ada)

Kalau kamu mau, saya bisa breakdown Phase 1–3 jadi task list per file (mis. “buat db.php, ubah options.php begini, ubah auth.php begini…”) biar eksekusinya tinggal dicicil tanpa nyasar.

Komentar

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *