feat: Demo Site Reset with baseline snapshots and warning banner #88

Closed
opened 2026-05-30 17:22:35 +00:00 by jmiller · 1 comment
Owner

Summary

Add a Demo Mode feature that allows MokoWaaS sites to be configured as demo instances with automatic periodic reset to a known baseline state.

Requirements

Demo Mode Banner

  • Configurable warning bar at the top of the frontend site when demo mode is enabled
  • Customizable message and color
  • Optional countdown to next scheduled reset
  • Dismissable per session

Baseline Snapshots

  • Save current site state (DB tables + media files) as a named baseline
  • Support multiple named baselines
  • Configurable list of DB tables to capture
  • Optional media directory snapshot via ZipArchive
  • Snapshots stored in JPATH_ROOT/mokowaas-snapshots/ with .htaccess protection

Reset Triggers

  • Admin toggle: one-shot Restore Now radio in plugin config
  • Query-string API: POST /?mokowaas=reset
  • REST API: POST /api/v1/mokowaas/reset
  • Joomla Scheduled Task: new plg_task_mokowaasdemo plugin

New Files

  • Service/DemoResetService.php
  • ResetController.php and SnapshotController.php
  • plg_task_mokowaas/ scheduled task plugin

Test Plan

  • Enable demo mode, verify banner appears on frontend
  • Take a snapshot, verify files created
  • Modify content, restore snapshot, verify content reverted
  • Test scheduled task reset via Joomla scheduler
  • Test REST and query-string API endpoints
  • Verify media snapshot/restore
  • Verify snapshot name validation rejects path traversal
## Summary Add a Demo Mode feature that allows MokoWaaS sites to be configured as demo instances with automatic periodic reset to a known baseline state. ## Requirements ### Demo Mode Banner - Configurable warning bar at the top of the frontend site when demo mode is enabled - Customizable message and color - Optional countdown to next scheduled reset - Dismissable per session ### Baseline Snapshots - Save current site state (DB tables + media files) as a named baseline - Support multiple named baselines - Configurable list of DB tables to capture - Optional media directory snapshot via ZipArchive - Snapshots stored in JPATH_ROOT/mokowaas-snapshots/ with .htaccess protection ### Reset Triggers - Admin toggle: one-shot Restore Now radio in plugin config - Query-string API: POST /?mokowaas=reset - REST API: POST /api/v1/mokowaas/reset - Joomla Scheduled Task: new plg_task_mokowaasdemo plugin ### New Files - Service/DemoResetService.php - ResetController.php and SnapshotController.php - plg_task_mokowaas/ scheduled task plugin ## Test Plan - [ ] Enable demo mode, verify banner appears on frontend - [ ] Take a snapshot, verify files created - [ ] Modify content, restore snapshot, verify content reverted - [ ] Test scheduled task reset via Joomla scheduler - [ ] Test REST and query-string API endpoints - [ ] Verify media snapshot/restore - [ ] Verify snapshot name validation rejects path traversal
Author
Owner

Branch created: feature/88-feat-demo-site-reset-with-baseline-snaps

git fetch origin
git checkout feature/88-feat-demo-site-reset-with-baseline-snaps
Branch created: [`feature/88-feat-demo-site-reset-with-baseline-snaps`](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/src/branch/feature/88-feat-demo-site-reset-with-baseline-snaps) ```bash git fetch origin git checkout feature/88-feat-demo-site-reset-with-baseline-snaps ```
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoWaaS#88