Files
Jonathan Miller 201a281e3a feat: add scheduled tasks, individual fields, remote storage
- Add plg_task_mokobackup: Joomla Scheduled Tasks integration so each
  backup profile can run on its own schedule (like Akeeba Backup Pro)
- Replace JSON config/filters with individual form fields and DB columns
- Add FTP/FTPS and Google Drive remote storage options per profile
- Add archive settings tab (format, compression, split size, backup dir)
- Add exclusion filter fields (dirs, files, tables) as newline-separated
  textareas instead of raw JSON

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-02 13:58:50 -05:00

3.2 KiB

CLAUDE.md

This file provides guidance to Claude Code when working with this repository.

Project Overview

MokoJoomBackup -- Full-site backup and restore for Joomla — database, files, and configuration

Field Value
Platform joomla
Language PHP
Default branch main
License GPL-3.0-or-later
Wiki MokoJoomBackup Wiki
Standards MokoStandards

Common Commands

make build        # Build the project
make lint         # Run linters
make validate     # Validate structure
make release      # Full release pipeline
make minify       # Minify CSS/JS assets
make clean        # Clean build artifacts
composer install  # Install PHP dependencies

Architecture

This is a Joomla package extension (pkg_mokobackup) containing three sub-extensions:

com_mokobackup (Component)

  • Admin backend for managing backup profiles and backup records
  • Backup engine: Engine/BackupEngine, Engine/DatabaseDumper, Engine/FileScanner, Engine/Archiver
  • Joomla 4/5 MVC: Controllers, Models, Views, Tables
  • Namespace: Joomla\Component\MokoBackup\Administrator
  • Database tables: #__mokobackup_profiles, #__mokobackup_records
  • CLI: cli/mokobackup.php for cron-based backups

plg_system_mokobackup (System Plugin)

  • Cleanup of expired backup archives (age + count limits)
  • Namespace: Joomla\Plugin\System\MokoBackup

plg_task_mokobackup (Task Plugin)

  • Integrates with Joomla's Scheduled Tasks (com_scheduler)
  • Registers "Run Backup Profile" task type
  • Each scheduled task selects a backup profile — create multiple tasks for different schedules
  • Namespace: Joomla\Plugin\Task\MokoBackup

plg_webservices_mokobackup (WebServices Plugin)

  • REST API for remote backup management
  • Wire-compatible with existing mcp_mokobackup MCP server
  • Endpoints: backup, backups, profiles, download, delete
  • Namespace: Joomla\Plugin\WebServices\MokoBackup

Database Schema

Two tables:

  • #__mokobackup_profiles — backup profiles (name, description, config JSON, filters JSON)
  • #__mokobackup_records — backup records (profile_id, status, origin, archive path, sizes, timestamps)

Rules

  • Never commit .claude/, .mcp.json, TODO.md, or *.min.css/*.min.js
  • Attribution: use Authored-by: Moko Consulting in commits
  • Branch strategy: develop on dev, merge to main for release
  • Minification: handled at build time (CI)
  • Wiki: documentation lives in the Gitea wiki, not in docs/ files
  • Standards: this repo follows MokoStandards

Coding Standards

  • PHP 8.1+ minimum
  • Joomla 4/5 DI container pattern: services/provider.php > Extension class
  • Legacy stub .php file required for plugin loader but empty
  • SubscriberInterface for event subscription (not on* method naming)
  • bind() > check() > store() for Table operations (not save())
  • Language file placement: site (no folder) vs admin (folder="administrator")
  • SPDX license headers on all PHP files