Files
Viktor Miller 4bc4d18f7b docs(07-03): create comprehensive deployment checklist
- Server requirements (PHP, WordPress, memory limits)
- Required plugins (ACF Pro, Formidable Forms Pro, Elementor Pro, WP Mail SMTP)
- Plugin configuration (ACF fields, Formidable forms F1-F5, Elementor templates)
- Email configuration (SMTP setup, notification testing)
- Access control verification (pages, redirects)
- User roles and capabilities (ddhh_provider role)
- Action Scheduler monitoring (pending/complete/failed actions)
- Testing checklist (provider/mentor/admin flows from Phase 7)
- Security checklist (HTTPS, ownership validation, CSRF protection)
- Performance considerations (caching, query optimization)
- Backup strategy (pre-deployment, rollback plan)
- Post-deployment verification (smoke tests, functional tests, monitoring)
- Known issues documented (4 minor UX issues from Phase 7 testing)

File: .planning/phases/07-testing-polish/DEPLOYMENT-CHECKLIST.md
2026-01-29 12:16:58 +09:00

13 KiB

Digital Dabei Job Manager - Deployment Checklist

This checklist ensures the plugin is ready for production deployment and all requirements are met.

1. Server Requirements

  • PHP Version: 7.4 or higher (8.0+ recommended)
  • WordPress Version: 6.0 or higher
  • PHP Memory Limit: 256M minimum (512M recommended for Action Scheduler)
  • Max Execution Time: 60 seconds minimum
  • HTTPS Enabled: SSL certificate installed and active
  • WP Cron: Enabled (required for Action Scheduler)
  • File Upload Limits: 10MB minimum for logo uploads

2. Required Plugins

Core Dependencies

  • Advanced Custom Fields (ACF) Pro: License activated, all field groups imported
  • Formidable Forms Pro: License activated, all forms (F1-F5) created
  • Elementor Pro: License activated, templates configured
  • WP Mail SMTP: Installed and configured for production email delivery

Formidable Forms Add-ons

  • Formidable Pro
  • Form Action Automation (for post creation)
  • User Registration Add-on (for provider registration)

3. Plugin Configuration

ACF Field Groups

  • Job Details field group exists
    • job_location (text field)
    • job_type (select: Vollzeit, Teilzeit, Minijob, Freelance/Projekt)
    • job_deadline (date picker, return format: Ymd)
    • job_contact_email (email field)
  • Job Deactivation field group exists
    • deactivation_reason (textarea)
    • deactivation_date (date picker)
  • Job Metadata field group exists
    • submission_date (date picker, readonly)
  • All field groups assigned to job_offer post type
  • German labels display correctly in admin

Formidable Forms (F1-F5)

  • F1: Provider Registration (form key: provider_registration)
    • Creates user with ddhh_provider role
    • Required fields: email, password, Anbieter Name
    • Auto-login after registration action configured
    • Redirect to dashboard after registration
  • F2: Job Submission (form key: job_submission)
    • Creates job_offer post with pending status
    • Maps all fields to ACF (title, content, location, type, deadline, contact email)
    • Logo upload field (stores as attachment)
    • Redirect to dashboard after submission
  • F3: Job Edit (form key: job_edit)
    • Loads existing job data via URL parameter
    • Ownership validation via frm_validate_entry hook
    • Preserves submission date on update
    • Resets status to pending after edit
  • F4: Job Deactivation (form key: job_deactivation)
    • Loads existing job data via URL parameter
    • Ownership validation
    • Sets status to draft
    • Captures deactivation reason in ACF field
  • F5: Job Application (form key: job_application)
    • Pre-fills mentor email if logged in
    • Sends application to provider's contact email
    • Stays on job detail page after submission

Elementor Templates

  • Job archive page (/jobangebote/) configured with Loop Grid
  • Single job template displays ACF fields dynamically
  • Contact form modal displays on single job pages
  • Templates use German labels and formatting

User Notification Opt-in

  • Mentor users can opt-in to job notifications
  • User meta key: ddhh_jm_notification_optin (value: 'yes')
  • Opt-in setting accessible via profile/account page

4. Email Configuration

WP Mail SMTP Production Setup

  • SMTP provider configured (Gmail, SendGrid, AWS SES, etc.)
  • SMTP credentials entered and tested
  • "From Email" set to verified sender address
  • "From Name" set appropriately (e.g., "Digital Dabei Hamburg")
  • Test email sent successfully from WP Mail SMTP settings

Email Verification

  • Admin email (WordPress Settings → General) is correct
  • Admin receives test notification emails
  • Provider receives test notification emails
  • Mentor receives test notification emails
  • Email templates display correctly (HTML formatting)
  • German text displays correctly (no character encoding issues)

Notification Testing

  • Job submission triggers admin notification
  • Job edit triggers admin notification with change summary
  • Job deactivation triggers admin notification with reason
  • Job publish triggers mentor notification (async batches)
  • Job application triggers provider notification
  • All email links are clickable and work correctly

5. Access Control

Required Pages

  • /anbieter-login/ page exists with login/registration forms
  • /anbieter-dashboard/ page exists with [ddhh_provider_dashboard] shortcode
  • Page IDs stored in options: ddhh_jm_login_page_id, ddhh_jm_dashboard_page_id
  • Pages are published and accessible

Redirect Testing

  • Providers attempting WP-Admin access redirected to dashboard
  • Exception: profile.php accessible for providers
  • Exception: admin-ajax.php accessible for AJAX
  • Non-logged-in users accessing dashboard redirected to login page
  • Non-logged-in users accessing job archive redirected to login page
  • Non-logged-in users accessing single job redirected to login page

6. User Roles & Capabilities

ddhh_provider Role

  • Role exists in WordPress
  • Capabilities configured:
    • read (can access WordPress)
    • edit_job_offers (can edit their own jobs)
    • delete_job_offers (can delete their own jobs)
    • read_job_offer (can read published jobs)
    • No publish_job_offers capability (enforces pending status)

Test Users

  • Test provider account created and can log in
  • Test mentor account (subscriber role) created and can log in
  • Test admin account can access all features
  • Provider can only edit/delete their own jobs (not others')
  • Provider cannot access WP-Admin (except profile.php)

7. Action Scheduler

Verification

  • Visit: /wp-admin/tools.php?page=action-scheduler
  • Action Scheduler page loads without errors
  • WP Cron is running (check via WP-Cron Control plugin or server cron)
  • Alternative: Server cron configured to trigger wp-cron.php every 5 minutes

Monitoring

  • Check "Pending" tab for queued email batches
  • Check "Complete" tab for successfully processed batches
  • Check "Failed" tab for errors (should be empty)
  • Review logs for "Scheduled X notification batches" messages
  • Review logs for "Processed notification batch" messages
  • No PHP errors or warnings in error logs

Performance

  • Email batches process in chunks of 50 users (rate limiting)
  • No timeout errors during batch processing
  • Batch actions complete within reasonable time (< 30 seconds per batch)

8. Testing Checklist

Provider Flow (See Plan 07-01)

  • Registration creates provider account successfully
  • Auto-login after registration works
  • Redirect to dashboard after registration works
  • Job submission creates pending post with all fields
  • Logo upload and display works
  • Dashboard displays submitted jobs with correct status
  • Edit form loads job data correctly
  • Edit saves changes and resets status to pending
  • Deactivation sets status to draft and captures reason
  • Provider can view their own jobs in dashboard
  • Logout functionality available

Mentor Flow (See Plan 07-02)

  • Job archive displays published jobs only
  • Login required to access job archive
  • Single job page displays all details correctly
  • Contact form modal displays on single job pages
  • Application form submits successfully
  • Provider receives application notification
  • Notification opt-in preference saves correctly
  • Opted-in mentors receive job publish notifications

Admin Flow (See Plan 07-03)

  • Admin job list displays custom columns (Eingereicht am, Standort, Art)
  • Custom columns are sortable
  • Pending jobs visible in admin list
  • Admin can change status from pending to published
  • Admin can reject jobs (set to draft)
  • Admin receives submission notification with edit link
  • Admin receives edit notification with change summary
  • Admin receives deactivation notification with reason
  • Email links are clickable and work correctly

9. Security Checklist

  • HTTPS Enabled: All pages served over SSL
  • User Enumeration: Blocked via security plugin or .htaccess
  • File Upload Restrictions: Only image files allowed for logos
  • Ownership Validation: Forms validate user owns job before editing/deactivation
  • Capability Checks: All admin functions check user capabilities
  • Nonce Verification: Formidable forms use nonces for CSRF protection
  • SQL Injection: All queries use prepared statements (WordPress core)
  • XSS Protection: All output escaped via esc_html(), esc_url(), etc.
  • Password Strength: WordPress default password strength enforced
  • Admin Access: Providers cannot access WP-Admin backend

10. Performance

  • Query Optimization: Custom columns use efficient queries (no N+1 issues)
  • Image Optimization: Logos auto-cropped to 200x200px on upload
  • Caching: Object caching enabled if high traffic expected (Redis, Memcached)
  • CDN: Consider CDN for static assets if high traffic
  • Database Indexes: ACF meta keys indexed for fast sorting
  • Action Scheduler Cleanup: Old completed actions cleaned up regularly (90-day retention)

11. Backup Strategy

Pre-Deployment

  • Full Database Backup: Export complete database before plugin activation
  • File System Backup: Backup entire WordPress installation
  • Test Restore: Verify backup can be restored successfully
  • Backup Storage: Store backups in secure, offsite location

Rollback Plan

  • Document rollback procedure (deactivate plugin, restore database)
  • Identify rollback trigger criteria (critical bugs, data loss)
  • Assign rollback decision authority (who can authorize rollback)
  • Test rollback procedure in staging environment

12. Post-Deployment Verification

Smoke Tests (Within 1 hour)

  • WordPress admin loads without errors
  • Plugin appears in active plugins list
  • Job archive page loads
  • Single job page loads
  • Provider login page loads
  • Provider dashboard loads
  • No fatal PHP errors in error logs

Functional Tests (Within 24 hours)

  • Provider registration creates account
  • Job submission creates pending post
  • Admin receives submission notification
  • Admin can publish job
  • Mentors receive publish notification (check Action Scheduler)
  • Mentor can apply to job
  • Provider receives application notification
  • Job edit works correctly
  • Job deactivation works correctly

Monitoring (First 7 days)

  • Monitor error logs daily for PHP warnings/errors
  • Check Action Scheduler for failed actions daily
  • Review email delivery logs for bounces/failures
  • Monitor server performance (CPU, memory, database queries)
  • Collect user feedback on any issues or confusion
  • Track job submission rate and mentor engagement

Issues Found During Testing

Known Issues (Phase 7 Testing)

Issue 1: No logout option on /anbieter-login/ page

  • Severity: Low (UX improvement)
  • Impact: Minor confusion for logged-in providers
  • Status: Documented, recommended fix for future update

Issue 2: Admin submission email missing job description

  • Severity: Medium (reduces notification usefulness)
  • Impact: Admin must click through to WP-Admin to read description
  • Status: Documented, recommended fix for future update

Issue 3: Deactivation reason not displayed in admin notification

  • Severity: Medium (reduces business intelligence)
  • Impact: Admin loses visibility into deactivation reasons via email
  • Status: Documented, recommended fix for future update

Issue 4: Admin email edit links not clickable

  • Severity: Medium (reduces notification usefulness)
  • Impact: Admin cannot click edit link, must copy/paste URL
  • Status: Documented, recommended fix for future update

Support Resources

Sign-Off

  • Technical Review: All checklist items verified by developer
  • QA Testing: All user flows tested end-to-end
  • Stakeholder Approval: Product owner approves deployment
  • Deployment Window: Scheduled deployment time confirmed
  • Team Notification: All stakeholders notified of deployment

Deployment Date: _________________

Deployed By: _________________

Verified By: _________________


Status: Ready for production deployment with 4 minor UX issues documented for future updates.