- Add ModuleRegistry for managing built-in modules (newsletter, wishlist, affiliate, subscription, licensing) - Add ModulesController REST API for module enable/disable - Create Modules settings page with category grouping and toggle controls - Integrate module checks across admin-spa and customer-spa - Add useModules hook for both SPAs to check module status - Hide newsletter from footer builder when module disabled - Hide wishlist features when module disabled (product cards, account menu, wishlist page) - Protect wishlist API endpoints with module checks - Auto-update navigation tree when modules toggled - Clean up obsolete documentation files - Add comprehensive documentation: - MODULE_SYSTEM_IMPLEMENTATION.md - MODULE_INTEGRATION_SUMMARY.md - ADDON_MODULE_INTEGRATION.md (proposal) - ADDON_MODULE_DESIGN_DECISIONS.md (design doc) - FEATURE_ROADMAP.md - SHIPPING_INTEGRATION.md Module system provides: - Centralized enable/disable for all features - Automatic navigation updates - Frontend/backend integration - Foundation for addon-module unification
14 KiB
WooNooW Feature Roadmap - 2025
Last Updated: December 26, 2025
Status: Planning Phase
This document outlines the comprehensive feature roadmap for WooNooW, building upon existing infrastructure.
🎯 Strategic Overview
Core Philosophy
- Modular Architecture - Features can be enabled/disabled independently
- Reuse Infrastructure - Leverage existing notification, validation, and API systems
- SPA-First - Modern React UI for admin and customer experiences
- Extensible - Filter hooks for customization and third-party integration
Existing Foundation (Already Built)
- ✅ Notification System (email, WhatsApp, Telegram, push)
- ✅ Email Builder (visual blocks, markdown, preview)
- ✅ Validation Framework (email/phone with external API support)
- ✅ Newsletter Subscribers Management
- ✅ Coupon System
- ✅ Customer Wishlist (basic)
- ✅ Product Reviews & Ratings
- ✅ Admin SPA with modern UI
- ✅ Customer SPA with theme system
- ✅ REST API infrastructure
- ✅ Addon bridge pattern
📦 Module 1: Centralized Module Management
Overview
Central control panel for enabling/disabling features to improve performance and reduce clutter.
Status: Planning 🔵
Implementation
Backend: Module Registry
File: includes/Core/ModuleRegistry.php
<?php
namespace WooNooW\Core;
class ModuleRegistry {
public static function get_all_modules() {
$modules = [
'newsletter' => [
'id' => 'newsletter',
'label' => 'Newsletter & Campaigns',
'description' => 'Email newsletter subscription and campaign management',
'category' => 'marketing',
'default_enabled' => true,
],
'wishlist' => [
'id' => 'wishlist',
'label' => 'Customer Wishlist',
'description' => 'Allow customers to save products for later',
'category' => 'customers',
'default_enabled' => true,
],
'affiliate' => [
'id' => 'affiliate',
'label' => 'Affiliate Program',
'description' => 'Referral tracking and commission management',
'category' => 'marketing',
'default_enabled' => false,
],
];
return apply_filters('woonoow/modules/registry', $modules);
}
public static function is_enabled($module_id) {
$enabled = get_option('woonoow_enabled_modules', []);
return in_array($module_id, $enabled);
}
}
Frontend: Settings UI
File: admin-spa/src/routes/Settings/Modules.tsx
- Grouped by category (Marketing, Customers, Products)
- Toggle switches for each module
- Configure button (when enabled)
- Dependency badges
Navigation Integration
Only show module routes if enabled in navigation tree.
Priority: High 🔴
Effort: 1 week
📧 Module 2: Newsletter Campaigns
Overview
Email broadcasting system for newsletter subscribers with design templates and campaign management.
Status: Planned 🟢 (Architecture in NEWSLETTER_CAMPAIGN_PLAN.md)
What's Already Built
- ✅ Subscriber management
- ✅ Email validation
- ✅ Email design templates (notification system)
- ✅ Email builder
- ✅ Email branding settings
What's Needed
1. Database Tables
wp_woonoow_campaigns (id, title, subject, content, template_id, status, scheduled_at, sent_at, total_recipients, sent_count, failed_count)
wp_woonoow_campaign_logs (id, campaign_id, subscriber_email, status, error_message, sent_at)
2. Backend Components
CampaignsController.php- CRUD APICampaignSender.php- Batch processor- WP-Cron integration (hourly check)
- Error logging and retry
3. Frontend Components
- Campaign list page
- Campaign editor (rich text for content)
- Template selector (reuse notification templates)
- Preview modal (merge template + content)
- Stats page
4. Workflow
- Create campaign (title, subject, select template, write content)
- Preview (see merged email)
- Send test email
- Schedule or send immediately
- System processes in batches (50 emails per batch, 5s delay)
- Track results (sent, failed, errors)
Priority: High 🔴
Effort: 2-3 weeks
💝 Module 3: Wishlist Notifications
Overview
Notify customers about wishlist events (price drops, back in stock, reminders).
Status: Planning 🔵
What's Already Built
- ✅ Wishlist functionality
- ✅ Notification system
- ✅ Email builder
- ✅ Product price/stock tracking
What's Needed
1. Notification Events
Add to EventRegistry.php:
wishlist_price_drop- Price dropped by X%wishlist_back_in_stock- Out-of-stock item availablewishlist_low_stock- Item running lowwishlist_reminder- Remind after X days
2. Tracking System
File: includes/Core/WishlistNotificationTracker.php
class WishlistNotificationTracker {
// WP-Cron daily job
public function track_price_changes() {
// Compare current price with last tracked
// If dropped by threshold, trigger notification
}
// WP-Cron hourly job
public function track_stock_status() {
// Check if out-of-stock items are back
// Trigger notification
}
// WP-Cron daily job
public function send_reminders() {
// Find wishlists not viewed in X days
// Send reminder notification
}
}
3. Settings
- Enable/disable each notification type
- Price drop threshold (10%, 20%, 50%)
- Reminder frequency (7, 14, 30 days)
- Low stock threshold (5, 10 items)
4. Email Templates
Create using existing email builder:
- Price drop (show old vs new price)
- Back in stock (with "Buy Now" button)
- Low stock alert (urgency)
- Wishlist reminder (list all items with images)
Priority: Medium 🟡
Effort: 1-2 weeks
🤝 Module 4: Affiliate Program
Overview
Referral tracking and commission management system.
Status: Planning 🔵
What's Already Built
- ✅ Customer management
- ✅ Order tracking
- ✅ Notification system
- ✅ Admin SPA infrastructure
What's Needed
1. Database Tables
wp_woonoow_affiliates (id, user_id, referral_code, commission_rate, status, total_referrals, total_earnings, paid_earnings)
wp_woonoow_referrals (id, affiliate_id, order_id, customer_id, commission_amount, status, created_at, approved_at, paid_at)
wp_woonoow_affiliate_payouts (id, affiliate_id, amount, method, status, notes, created_at, completed_at)
2. Tracking System
class AffiliateTracker {
// Set cookie for 30 days
public function track_referral($referral_code) {
setcookie('woonoow_ref', $referral_code, time() + (30 * DAY_IN_SECONDS));
}
// Record on order completion
public function record_referral($order_id) {
if (isset($_COOKIE['woonoow_ref'])) {
// Get affiliate by code
// Calculate commission
// Create referral record
// Clear cookie
}
}
}
3. Admin UI
Route: /marketing/affiliates
- Affiliate list (name, code, referrals, earnings, status)
- Approve/reject affiliates
- Set commission rates
- View referral history
- Process payouts
4. Customer Dashboard
Route: /account/affiliate
- Referral link & code
- Referral stats (clicks, conversions, earnings)
- Earnings breakdown (pending, approved, paid)
- Payout request form
- Referral history
5. Notification Events
affiliate_application_approvedaffiliate_referral_completedaffiliate_payout_processed
Priority: Medium 🟡
Effort: 3-4 weeks
🔄 Module 5: Product Subscriptions
Overview
Recurring product subscriptions with flexible billing cycles.
Status: Planning 🔵
What's Already Built
- ✅ Product management
- ✅ Order system
- ✅ Payment gateways
- ✅ Notification system
What's Needed
1. Database Tables
wp_woonoow_subscriptions (id, customer_id, product_id, status, billing_period, billing_interval, price, next_payment_date, start_date, end_date, trial_end_date)
wp_woonoow_subscription_orders (id, subscription_id, order_id, payment_status, created_at)
2. Product Meta
Add subscription options to product:
- Is subscription product (checkbox)
- Billing period (daily, weekly, monthly, yearly)
- Billing interval (e.g., 2 for every 2 months)
- Trial period (days)
3. Renewal System
class SubscriptionRenewal {
// WP-Cron daily job
public function process_renewals() {
$due_subscriptions = $this->get_due_subscriptions();
foreach ($due_subscriptions as $subscription) {
// Create renewal order
// Process payment
// Update next payment date
// Send notification
}
}
}
4. Customer Dashboard
Route: /account/subscriptions
- Active subscriptions list
- Pause/resume subscription
- Cancel subscription
- Update payment method
- View billing history
- Change billing cycle
5. Admin UI
Route: /products/subscriptions
- All subscriptions list
- Filter by status
- View subscription details
- Manual renewal
- Cancel/refund
Priority: Low 🟢
Effort: 4-5 weeks
🔑 Module 6: Software Licensing
Overview
License key generation, validation, and management for digital products.
Status: Planning 🔵
What's Already Built
- ✅ Product management
- ✅ Order system
- ✅ Customer management
- ✅ REST API infrastructure
What's Needed
1. Database Tables
wp_woonoow_licenses (id, license_key, product_id, order_id, customer_id, status, activations_limit, activations_count, expires_at, created_at)
wp_woonoow_license_activations (id, license_id, site_url, ip_address, user_agent, activated_at, deactivated_at)
2. License Generation
class LicenseGenerator {
public function generate_license($order_id, $product_id) {
// Generate unique key (XXXX-XXXX-XXXX-XXXX)
// Get license settings from product meta
// Create license record
// Return license key
}
}
3. Validation API
// Public API endpoint
POST /woonoow/v1/licenses/validate
{
"license_key": "XXXX-XXXX-XXXX-XXXX",
"site_url": "https://example.com"
}
Response:
{
"valid": true,
"license": {
"key": "XXXX-XXXX-XXXX-XXXX",
"product_id": 123,
"expires_at": "2026-12-31",
"activations_remaining": 3
}
}
4. Product Settings
Add licensing options to product:
- Licensed product (checkbox)
- Activation limit (number of sites)
- License duration (days, empty = lifetime)
5. Customer Dashboard
Route: /account/licenses
- Active licenses list
- License key (copy button)
- Product name
- Activations (2/5 sites)
- Expiry date
- Manage activations (deactivate sites)
- Download product files
6. Admin UI
Route: /products/licenses
- All licenses list
- Filter by status, product
- View license details
- View activations
- Revoke license
- Extend expiry
- Increase activation limit
Priority: Low 🟢
Effort: 3-4 weeks
📅 Implementation Timeline
Phase 1: Foundation (Weeks 1-2)
- ✅ Module Registry System
- ✅ Settings UI for Modules
- ✅ Navigation Integration
Phase 2: Newsletter Campaigns (Weeks 3-5)
- Database schema
- Campaign CRUD API
- Campaign UI (list, editor, preview)
- Sending system with batch processing
- Stats and reporting
Phase 3: Wishlist Notifications (Weeks 6-7)
- Notification events registration
- Tracking system (price, stock, reminders)
- Email templates
- Settings UI
- WP-Cron jobs
Phase 4: Affiliate Program (Weeks 8-11)
- Database schema
- Tracking system (cookies, referrals)
- Admin UI (affiliates, payouts)
- Customer dashboard
- Notification events
Phase 5: Subscriptions (Weeks 12-16)
- Database schema
- Product subscription options
- Renewal system
- Customer dashboard
- Admin management UI
Phase 6: Licensing (Weeks 17-20)
- Database schema
- License generation
- Validation API
- Customer dashboard
- Admin management UI
🎯 Success Metrics
Newsletter Campaigns
- Campaign creation time < 5 minutes
- Email delivery rate > 95%
- Batch processing handles 10,000+ subscribers
- Zero duplicate sends
Wishlist Notifications
- Notification delivery within 1 hour of trigger
- Price drop detection accuracy 100%
- Stock status sync < 5 minutes
- Reminder delivery on schedule
Affiliate Program
- Referral tracking accuracy 100%
- Commission calculation accuracy 100%
- Payout processing < 24 hours
- Dashboard load time < 2 seconds
Subscriptions
- Renewal success rate > 95%
- Payment retry on failure (3 attempts)
- Customer cancellation < 3 clicks
- Billing accuracy 100%
Licensing
- License validation response < 500ms
- Activation tracking accuracy 100%
- Zero false positives on validation
- Deactivation sync < 1 minute
🔧 Technical Considerations
Performance
- Cache module states (transients)
- Index database tables properly
- Batch process large operations
- Use WP-Cron for scheduled tasks
Security
- Validate all API inputs
- Sanitize user data
- Use nonces for forms
- Encrypt sensitive data (license keys, API keys)
Scalability
- Support 100,000+ subscribers (newsletter)
- Support 10,000+ affiliates
- Support 50,000+ subscriptions
- Support 100,000+ licenses
Compatibility
- WordPress 6.0+
- WooCommerce 8.0+
- PHP 7.4+
- MySQL 5.7+
📚 Documentation Needs
For each module, create:
- User Guide - How to use the feature
- Developer Guide - Hooks, filters, API endpoints
- Admin Guide - Configuration and management
- Migration Guide - Importing from other plugins
🚀 Next Steps
- Review and approve this roadmap
- Prioritize modules based on business needs
- Start with Module 1 (Module Management System)
- Implement Phase 1 (Foundation)
- Iterate and gather feedback
📝 Notes
- All modules leverage existing notification system
- All modules use existing email builder
- All modules follow addon bridge pattern
- All modules have enable/disable toggle
- All modules are SPA-first with React UI