468 lines
21 KiB
Markdown
468 lines
21 KiB
Markdown
# IGNY8 Phase 3: Toolkit Plugin (03D)
|
|
## Utility Plugin — Performance, Forms, Security, SMTP, WooCommerce
|
|
|
|
**Document Version:** 1.0
|
|
**Date:** 2026-03-23
|
|
**Phase:** IGNY8 Phase 3 — WordPress Ecosystem
|
|
**Status:** Build Ready
|
|
**Source of Truth:** Codebase at `/data/app/igny8/`
|
|
**Audience:** Claude Code, WordPress Developers, Architects
|
|
|
|
---
|
|
|
|
## 1. CURRENT STATE
|
|
|
|
### No Toolkit Exists
|
|
- Users rely on multiple plugins for common utilities: WP Super Cache, Contact Form 7, Wordfence, WP Mail SMTP, etc.
|
|
- Each additional plugin adds overhead, potential conflicts, and security surface area
|
|
- No IGNY8-branded utility layer exists
|
|
|
|
### Relationship to IGNY8 Ecosystem
|
|
- **Independent** — toolkit works without the main IGNY8 plugin or companion theme
|
|
- **Complementary** — designed to pair with the companion theme (03C) for a complete site stack
|
|
- **Defers** — if both toolkit and main IGNY8 plugin are installed, toolkit's SMTP module defers to IGNY8's SMTP (03A Module 9b) to avoid conflict
|
|
- **Same module pattern** — uses identical `register()`, `activate()`, `deactivate()`, `is_active()`, `boot()` module architecture as 03A
|
|
|
|
### Plugin Identity
|
|
- **Plugin Name:** IGNY8 Toolkit
|
|
- **Text Domain:** `igny8-toolkit`
|
|
- **Option Prefix:** `igny8_toolkit_`
|
|
- **Table Prefix:** `{wp_prefix}igny8_toolkit_`
|
|
- **Min Requirements:** WordPress 5.9+, PHP 7.4+
|
|
- **License:** GPL v2+
|
|
- **Freemium Model:** Core features free, advanced features premium (detailed per module below)
|
|
|
|
---
|
|
|
|
## 2. WHAT TO BUILD
|
|
|
|
### Overview
|
|
A separate utility plugin with 5 infrastructure modules. Each module is independently toggleable and has zero performance impact when disabled. Follows the same module manager pattern as the main IGNY8 plugin (03A).
|
|
|
|
### Module 1: Performance
|
|
|
|
**Purpose:** Page caching, asset optimization, image optimization, and database cleanup.
|
|
|
|
**Classes:**
|
|
| Class | File | Purpose |
|
|
|-------|------|---------|
|
|
| `Toolkit_Performance_Module` | `modules/performance/class-performance-module.php` | Module bootstrap |
|
|
| `Toolkit_Page_Cache` | `modules/performance/class-page-cache.php` | File-based page cache |
|
|
| `Toolkit_Asset_Optimizer` | `modules/performance/class-asset-optimizer.php` | CSS/JS combine + minify |
|
|
| `Toolkit_Image_Optimizer` | `modules/performance/class-image-optimizer.php` | WebP conversion, lazy loading |
|
|
| `Toolkit_Critical_CSS` | `modules/performance/class-critical-css.php` | Above-fold CSS extraction |
|
|
| `Toolkit_HTML_Minifier` | `modules/performance/class-html-minifier.php` | Remove whitespace/comments |
|
|
| `Toolkit_Browser_Cache` | `modules/performance/class-browser-cache.php` | Expires + cache-control headers |
|
|
| `Toolkit_Preload` | `modules/performance/class-preload.php` | `<link rel="preload">` injection |
|
|
| `Toolkit_Database_Optimizer` | `modules/performance/class-database-optimizer.php` | Clean transients, revisions, spam |
|
|
|
|
**Features:**
|
|
|
|
| Feature | Tier | Description |
|
|
|---------|------|-------------|
|
|
| Page cache (basic) | Free | File-based cache, auto-purge on `save_post` |
|
|
| HTML minification | Free | Strip whitespace and comments from HTML output |
|
|
| Asset optimizer | Premium | Combine + minify CSS/JS with exclusion rules |
|
|
| Image optimizer | Premium | WebP conversion via GD/Imagick, lazy loading, responsive srcset |
|
|
| Critical CSS | Premium | Extract above-fold CSS for faster FCP |
|
|
| Browser cache headers | Premium | Expires + cache-control via `.htaccess` or `send_headers` |
|
|
| Preload/prefetch | Premium | `<link rel="preload">` for key resources |
|
|
| Gzip compression check | Free | Display gzip status in dashboard |
|
|
| Database optimizer | Premium | Clean transients, post revisions, spam comments, orphan meta |
|
|
|
|
**Database Table: `{prefix}igny8_toolkit_cache_stats`**
|
|
```sql
|
|
CREATE TABLE {prefix}igny8_toolkit_cache_stats (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
hits INT DEFAULT 0,
|
|
misses INT DEFAULT 0,
|
|
purges INT DEFAULT 0,
|
|
last_purge DATETIME NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
```
|
|
|
|
### Module 2: Forms
|
|
|
|
**Purpose:** Drag-and-drop form builder with submissions storage, email notifications, and anti-spam.
|
|
|
|
**Classes:**
|
|
| Class | File | Purpose |
|
|
|-------|------|---------|
|
|
| `Toolkit_Forms_Module` | `modules/forms/class-forms-module.php` | Module bootstrap |
|
|
| `Toolkit_Form_Builder` | `modules/forms/class-form-builder.php` | Admin form editor |
|
|
| `Toolkit_Form_Renderer` | `modules/forms/class-form-renderer.php` | Frontend rendering via shortcode/block |
|
|
| `Toolkit_Form_Processor` | `modules/forms/class-form-processor.php` | Submission handling |
|
|
| `Toolkit_Form_Notifications` | `modules/forms/class-form-notifications.php` | Email notifications |
|
|
| `Toolkit_Form_Entries` | `modules/forms/class-form-entries.php` | Submission viewer + export |
|
|
| `Toolkit_Form_AntiSpam` | `modules/forms/class-form-antispam.php` | Honeypot + token validation |
|
|
|
|
**Features:**
|
|
|
|
| Feature | Tier | Description |
|
|
|---------|------|-------------|
|
|
| Basic builder (5 field types) | Free | text, email, textarea, select, checkbox |
|
|
| Simple rendering | Free | Shortcode `[igny8_form id="X"]` |
|
|
| All field types | Premium | + radio, file upload, hidden, number, date |
|
|
| Conditional logic | Premium | Show/hide fields based on other field values |
|
|
| Multi-step forms | Premium | Step-by-step form wizard |
|
|
| Submissions dashboard | Premium | View, search, export CSV, delete entries |
|
|
| Email templates | Premium | Customizable notification templates |
|
|
|
|
**Anti-spam:** Honeypot field + basic token validation — no external service dependency.
|
|
|
|
**Embed:** Shortcode `[igny8_form id="X"]` + Gutenberg block for insertion.
|
|
|
|
**Database Table: `{prefix}igny8_toolkit_submissions`**
|
|
```sql
|
|
CREATE TABLE {prefix}igny8_toolkit_submissions (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
form_id INT NOT NULL,
|
|
data LONGTEXT NOT NULL,
|
|
ip_hash VARCHAR(64) NULL,
|
|
user_agent VARCHAR(500) NULL,
|
|
created_at DATETIME NOT NULL,
|
|
INDEX idx_form (form_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
```
|
|
|
|
### Module 3: Security
|
|
|
|
**Purpose:** Login protection, basic firewall, WordPress hardening, and audit logging.
|
|
|
|
**Classes:**
|
|
| Class | File | Purpose |
|
|
|-------|------|---------|
|
|
| `Toolkit_Security_Module` | `modules/security/class-security-module.php` | Module bootstrap |
|
|
| `Toolkit_Login_Protection` | `modules/security/class-login-protection.php` | Brute-force protection |
|
|
| `Toolkit_Firewall` | `modules/security/class-firewall.php` | Bad user agent blocking, upload protection |
|
|
| `Toolkit_Hardening` | `modules/security/class-hardening.php` | XML-RPC disable, file editor, WP version |
|
|
| `Toolkit_Headers` | `modules/security/class-headers.php` | Security headers |
|
|
| `Toolkit_Audit_Log` | `modules/security/class-audit-log.php` | Event tracking |
|
|
|
|
**Features:**
|
|
|
|
| Feature | Tier | Description |
|
|
|---------|------|-------------|
|
|
| Login attempts limit | Free | Default 5 attempts, 15min lockout |
|
|
| File editor disable | Free | `DISALLOW_FILE_EDIT` constant |
|
|
| Security headers | Free | X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy |
|
|
| Hide WP version | Free | Remove generator meta tag |
|
|
| XML-RPC disable | Free | Block XML-RPC requests |
|
|
| Advanced firewall | Premium | Block bad user agents, PHP execution in uploads |
|
|
| 2FA via email code | Premium | Two-factor authentication on login |
|
|
| Full audit logging | Premium | Track logins, settings changes, plugin activations, role changes |
|
|
| IP allowlist/blocklist | Premium | Manage access by IP address |
|
|
|
|
**Database Table: `{prefix}igny8_toolkit_audit_log`**
|
|
```sql
|
|
CREATE TABLE {prefix}igny8_toolkit_audit_log (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
event_type VARCHAR(50) NOT NULL,
|
|
user_id BIGINT NULL,
|
|
object_type VARCHAR(50) NULL,
|
|
object_id BIGINT NULL,
|
|
details LONGTEXT NULL,
|
|
ip VARCHAR(45) NULL,
|
|
created_at DATETIME NOT NULL,
|
|
INDEX idx_event (event_type, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
```
|
|
|
|
### Module 4: SMTP
|
|
|
|
**Purpose:** SMTP mail override for sites NOT using the main IGNY8 plugin. If both installed, this module defers to IGNY8's SMTP (03A Module 9b).
|
|
|
|
**Classes:**
|
|
| Class | File | Purpose |
|
|
|-------|------|---------|
|
|
| `Toolkit_SMTP_Module` | `modules/smtp/class-smtp-module.php` | Module bootstrap (checks for main plugin) |
|
|
| `Toolkit_SMTP_Mailer` | `modules/smtp/class-smtp-mailer.php` | SMTP mail override |
|
|
| `Toolkit_Email_Log` | `modules/smtp/class-email-log.php` | Delivery log with status |
|
|
| `Toolkit_Email_Test` | `modules/smtp/class-email-test.php` | Test email sender |
|
|
|
|
**Features:**
|
|
|
|
| Feature | Tier | Description |
|
|
|---------|------|-------------|
|
|
| SMTP override | Free | Host, port, username, password, encryption (SSL/TLS) |
|
|
| From name/email | Free | Override WordPress default sender |
|
|
| Mail sending | Free | Route all `wp_mail()` through SMTP |
|
|
| Email delivery log | Premium | Track sent/failed with error details |
|
|
| Email templates | Premium | Customizable notification email templates |
|
|
| Resend failed | Premium | Retry failed deliveries |
|
|
|
|
**Conflict Resolution:** On `boot()`, check `class_exists('IGNY8_SMTP_Module')` — if main plugin SMTP is active, this module auto-deactivates and shows admin notice: "SMTP is handled by the IGNY8 plugin."
|
|
|
|
**Database Table: `{prefix}igny8_toolkit_email_log`**
|
|
```sql
|
|
CREATE TABLE {prefix}igny8_toolkit_email_log (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
to_email VARCHAR(320) NOT NULL,
|
|
subject VARCHAR(500) NOT NULL,
|
|
status VARCHAR(20) NOT NULL,
|
|
error_message TEXT NULL,
|
|
sent_at DATETIME NOT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
```
|
|
|
|
### Module 5: WooCommerce Enhancements
|
|
|
|
**Purpose:** UX improvements for WooCommerce stores. Entirely premium — only available in paid version.
|
|
|
|
**Classes:**
|
|
| Class | File | Purpose |
|
|
|-------|------|---------|
|
|
| `Toolkit_WooCommerce_Module` | `modules/woocommerce/class-woocommerce-module.php` | Module bootstrap (requires WooCommerce) |
|
|
| `Toolkit_Quick_View` | `modules/woocommerce/class-quick-view.php` | Modal product preview on shop pages |
|
|
| `Toolkit_Wishlist` | `modules/woocommerce/class-wishlist.php` | Cookie-based (guest) + user meta (logged in) |
|
|
| `Toolkit_AJAX_Cart` | `modules/woocommerce/class-ajax-cart.php` | AJAX add-to-cart on archive pages |
|
|
| `Toolkit_Product_Filters` | `modules/woocommerce/class-product-filters.php` | Price/attribute/category AJAX filters |
|
|
| `Toolkit_Product_Gallery` | `modules/woocommerce/class-product-gallery.php` | Zoom, lightbox, thumbnails |
|
|
|
|
**Features (all Premium):**
|
|
- Quick view modal on shop/archive pages
|
|
- Wishlist (cookie-based for guests, user meta for logged-in)
|
|
- AJAX add-to-cart on archive pages (no page reload)
|
|
- Product filters (price range, attributes, categories) with AJAX
|
|
- Product gallery enhancement (zoom, lightbox, thumbnail navigation)
|
|
|
|
**Conditional Loading:** Module only loads when WooCommerce is active (`class_exists('WooCommerce')`).
|
|
|
|
---
|
|
|
|
## 3. DATA MODELS & APIS
|
|
|
|
### Database Tables (4 total)
|
|
|
|
All tables created on plugin activation by installer class:
|
|
|
|
| # | Table | Module | Purpose |
|
|
|---|-------|--------|---------|
|
|
| 1 | `{prefix}igny8_toolkit_submissions` | Forms | Form submission data (JSON) |
|
|
| 2 | `{prefix}igny8_toolkit_email_log` | SMTP | Email delivery tracking |
|
|
| 3 | `{prefix}igny8_toolkit_audit_log` | Security | Security event log |
|
|
| 4 | `{prefix}igny8_toolkit_cache_stats` | Performance | Cache hit/miss stats |
|
|
|
|
### Options Summary
|
|
|
|
All options use `igny8_toolkit_` prefix:
|
|
|
|
| Option Key | Module | Content |
|
|
|------------|--------|---------|
|
|
| `igny8_toolkit_performance_settings` | Performance | Cache, minify, optimize toggles |
|
|
| `igny8_toolkit_forms` | Forms | JSON: `[{id, name, fields, settings}]` |
|
|
| `igny8_toolkit_security_settings` | Security | Login limits, hardening toggles |
|
|
| `igny8_toolkit_smtp_settings` | SMTP | Host, port, user, pass, encryption |
|
|
| `igny8_toolkit_woocommerce_settings` | WooCommerce | Feature toggles |
|
|
| `igny8_toolkit_license_key` | Global | Premium license key |
|
|
| `igny8_toolkit_license_status` | Global | active/expired/invalid |
|
|
|
|
### No REST API Endpoints
|
|
The toolkit plugin does not expose REST endpoints. All admin pages are standard WordPress admin screens.
|
|
|
|
---
|
|
|
|
## 4. IMPLEMENTATION STEPS
|
|
|
|
### Plugin Architecture
|
|
|
|
```
|
|
igny8-toolkit/
|
|
├── igny8-toolkit.php # Plugin header, constants, module loader
|
|
├── readme.txt # WordPress.org readme
|
|
├── uninstall.php # Full cleanup on uninstall
|
|
├── includes/
|
|
│ ├── class-toolkit.php # Main singleton class
|
|
│ ├── class-module-manager.php # Module toggle (same pattern as 03A)
|
|
│ ├── class-installer.php # Create 4 DB tables on activation
|
|
│ ├── class-license.php # Premium license validation
|
|
│ ├── modules/
|
|
│ │ ├── performance/ # Module 1 — 9 class files
|
|
│ │ ├── forms/ # Module 2 — 7 class files
|
|
│ │ ├── security/ # Module 3 — 6 class files
|
|
│ │ ├── smtp/ # Module 4 — 4 class files
|
|
│ │ └── woocommerce/ # Module 5 — 6 class files
|
|
│ └── admin/
|
|
│ ├── class-dashboard.php # Toolkit dashboard
|
|
│ └── views/ # Admin page templates
|
|
├── admin/ # Admin CSS + JS
|
|
│ ├── css/
|
|
│ └── js/
|
|
├── frontend/ # Frontend CSS + JS
|
|
│ ├── css/
|
|
│ └── js/
|
|
└── languages/
|
|
└── igny8-toolkit.pot # Translation template
|
|
```
|
|
|
|
### Build Sequence
|
|
|
|
**Phase 1: Foundation (Days 1-2)**
|
|
1. Create `igny8-toolkit.php` with header, constants, autoloader
|
|
2. Build `class-toolkit.php` singleton — `instance()`, `init()`, `load_modules()`
|
|
3. Build `class-module-manager.php` — same pattern as 03A
|
|
4. Build `class-installer.php` — create 4 DB tables via `dbDelta()`
|
|
5. Build `class-license.php` — premium license validation
|
|
6. Build `admin/class-dashboard.php` — toolkit overview page
|
|
|
|
**Phase 2: Performance Module (Days 3-5)**
|
|
1. Build page cache (file-based, purge on `save_post`)
|
|
2. Build HTML minifier (output buffer processing)
|
|
3. Build asset optimizer (combine/minify with exclusions)
|
|
4. Build image optimizer (WebP via GD/Imagick, lazy loading)
|
|
5. Build critical CSS generator
|
|
6. Build browser cache + preload
|
|
7. Build database optimizer
|
|
|
|
**Phase 3: Forms Module (Days 6-8)**
|
|
1. Build form builder admin UI
|
|
2. Build form renderer (shortcode + block)
|
|
3. Build form processor (validation + sanitization)
|
|
4. Build notifications (email on submission)
|
|
5. Build anti-spam (honeypot + token)
|
|
6. Build entries admin page (view + CSV export)
|
|
|
|
**Phase 4: Security Module (Days 9-11)**
|
|
1. Build login protection (attempt tracking, lockout)
|
|
2. Build firewall (bad user agents, upload protection)
|
|
3. Build hardening (XML-RPC, file editor, version hide, headers)
|
|
4. Build audit log (event tracking)
|
|
5. Build 2FA (premium — email code on login)
|
|
|
|
**Phase 5: SMTP Module (Days 12-13)**
|
|
1. Build SMTP mailer (override `wp_mail`)
|
|
2. Build conflict check (defer to main IGNY8 plugin if active)
|
|
3. Build email log
|
|
4. Build test email sender
|
|
|
|
**Phase 6: WooCommerce Module (Days 14-16)**
|
|
1. Build quick view modal
|
|
2. Build wishlist (cookie + user meta)
|
|
3. Build AJAX cart
|
|
4. Build product filters
|
|
5. Build gallery enhancements
|
|
|
|
**Phase 7: Compliance (Days 17-18)**
|
|
1. WordPress.org compliance — sanitize/escape, nonces, capability checks
|
|
2. i18n pass — all strings via `igny8-toolkit` text domain
|
|
3. readme.txt with feature list, changelog
|
|
4. Accessibility review
|
|
|
|
### Admin Menu Structure
|
|
|
|
```
|
|
IGNY8 Toolkit (top-level, dashicons-admin-tools)
|
|
├── Dashboard — Overview, module status, cache stats
|
|
├── Performance — Cache, minify, optimize, image settings
|
|
├── Forms — Form builder, entries, settings
|
|
├── Security — Login protection, hardening, audit log
|
|
├── SMTP — Mail settings, log, test
|
|
├── WooCommerce — Feature toggles (when WooCommerce active)
|
|
└── License — Premium license management
|
|
```
|
|
|
|
---
|
|
|
|
## 5. ACCEPTANCE CRITERIA
|
|
|
|
### Performance (Module 1)
|
|
- [ ] Page cache creates static HTML files and serves them on repeat visits
|
|
- [ ] Cache auto-purges on `save_post` for the updated post's URL
|
|
- [ ] HTML minification reduces output size by removing whitespace/comments
|
|
- [ ] Image optimizer converts uploads to WebP format
|
|
- [ ] Lazy loading adds `loading="lazy"` to images below fold
|
|
- [ ] Database optimizer cleans transients, revisions, spam comments
|
|
- [ ] Cache stats table tracks hits/misses/purges
|
|
|
|
### Forms (Module 2)
|
|
- [ ] Form builder creates forms with configurable fields
|
|
- [ ] `[igny8_form id="X"]` shortcode renders form on frontend
|
|
- [ ] Form submissions stored in `igny8_toolkit_submissions` table
|
|
- [ ] Email notification sent on submission
|
|
- [ ] Honeypot field blocks spam submissions
|
|
- [ ] Entries admin page shows submissions with CSV export
|
|
- [ ] All form data sanitized: `sanitize_text_field()`, `sanitize_email()`, `wp_kses_post()` per field type
|
|
|
|
### Security (Module 3)
|
|
- [ ] Login attempts limited to 5 per 15 minutes (configurable)
|
|
- [ ] Lockout message displayed after threshold exceeded
|
|
- [ ] XML-RPC disabled when hardening active
|
|
- [ ] File editor disabled via `DISALLOW_FILE_EDIT`
|
|
- [ ] WP version removed from `<head>` and feeds
|
|
- [ ] Security headers set: X-Frame-Options, X-Content-Type-Options, Referrer-Policy
|
|
- [ ] Audit log records login attempts, settings changes, plugin activations
|
|
|
|
### SMTP (Module 4)
|
|
- [ ] SMTP override routes `wp_mail()` through configured server
|
|
- [ ] Test email sends successfully with configured SMTP
|
|
- [ ] Module auto-deactivates when main IGNY8 plugin SMTP is active
|
|
- [ ] Email log records sent/failed status with error messages
|
|
|
|
### WooCommerce (Module 5)
|
|
- [ ] Quick view modal opens on shop/archive pages
|
|
- [ ] Wishlist persists for guests (cookie) and users (user meta)
|
|
- [ ] AJAX add-to-cart works without page reload
|
|
- [ ] Product filters update results via AJAX
|
|
- [ ] Module only loads when WooCommerce is active
|
|
|
|
### Cross-Module
|
|
- [ ] All 5 modules independently toggleable — zero impact when disabled
|
|
- [ ] Plugin activates without errors on WordPress 5.9+ with PHP 7.4+
|
|
- [ ] All 4 database tables created on activation
|
|
- [ ] All strings translatable via `igny8-toolkit` text domain
|
|
- [ ] All inputs sanitized, all outputs escaped
|
|
- [ ] Nonce verification on all form submissions
|
|
- [ ] Premium features gated behind license validation
|
|
|
|
---
|
|
|
|
## 6. CLAUDE CODE INSTRUCTIONS
|
|
|
|
### Context Requirements
|
|
Before starting implementation:
|
|
1. Read 03A (main plugin) — understand module manager pattern to replicate
|
|
2. Read 03C (companion theme) — understand theme as primary consumer of toolkit features
|
|
|
|
### Execution Order
|
|
```
|
|
Foundation → Performance → Forms → Security → SMTP → WooCommerce → Compliance
|
|
```
|
|
|
|
### Critical Rules
|
|
1. **Independent plugin** — must work without main IGNY8 plugin or companion theme
|
|
2. **Same module pattern** — `register()`, `activate()`, `deactivate()`, `is_active()`, `boot()` — identical to 03A
|
|
3. **SMTP conflict resolution** — check `class_exists('IGNY8_SMTP_Module')` on boot, auto-defer if main plugin active
|
|
4. **WooCommerce conditional** — Module 5 only loads when `class_exists('WooCommerce')` is true
|
|
5. **Table prefix** — all tables use `{wp_prefix}igny8_toolkit_` (different from main plugin's `{wp_prefix}igny8_`)
|
|
6. **Option prefix** — all options use `igny8_toolkit_` prefix
|
|
7. **Text domain** — `igny8-toolkit` (different from plugin's `igny8` and theme's `igny8-theme`)
|
|
8. **Freemium** — free features work without license, premium features check `class-license.php` validation
|
|
9. **Sanitize/escape** — same WordPress standards as 03A
|
|
10. **No external dependencies** — no CDN scripts, no external API calls (except SMTP + optional license check)
|
|
|
|
### File Creation Order
|
|
```
|
|
1. igny8-toolkit.php (plugin header + bootstrap)
|
|
2. includes/class-toolkit.php (singleton)
|
|
3. includes/class-module-manager.php (module orchestration)
|
|
4. includes/class-installer.php (4 DB tables)
|
|
5. includes/class-license.php (premium validation)
|
|
6. includes/admin/class-dashboard.php (overview page)
|
|
7. includes/modules/performance/* (9 files)
|
|
8. includes/modules/forms/* (7 files)
|
|
9. includes/modules/security/* (6 files)
|
|
10. includes/modules/smtp/* (4 files)
|
|
11. includes/modules/woocommerce/* (6 files)
|
|
12. admin/ (CSS + JS assets)
|
|
13. frontend/ (CSS + JS assets)
|
|
14. uninstall.php (cleanup)
|
|
15. languages/igny8-toolkit.pot (i18n)
|
|
```
|
|
|
|
### Cross-References
|
|
|
|
| Doc | Relationship |
|
|
|-----|-------------|
|
|
| 03A WP Plugin Standalone | Module manager pattern replicated; SMTP conflict resolution when both installed |
|
|
| 03C Companion Theme | Theme is primary consumer of toolkit features (forms, performance) |
|