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.
Tinggalkan Balasan