opwa/
├── opwa.php Main plugin file, constants, bootstrap
├── admin/
│ └── class-opwa-admin.php All 9 admin tab views, save handlers, menu
├── assets/
│ ├── css/
│ │ └── opwa-admin-v2.css Admin UI styles (Orravo design system)
│ └── js/
│ └── opwa-admin-v2.js Admin JS: AJAX, media picker, charts, route builder
└── includes/
├── class-opwa-analytics.php Summary / chart data, REST beacon/subscribe/unsubscribe
├── class-opwa-cli.php WP-CLI commands
├── class-opwa-core.php Plugin init, manifest/SW serving, AJAX handlers, icon gen
├── class-opwa-db.php Database: tables, CRUD for subscribers/campaigns/analytics
├── class-opwa-push.php VAPID keys, JWT, RFC 8188 encryption, send/send_to_all
└── class-opwa-sw-builder.php Dynamic service worker JS generator
Constants (defined in opwa.php):
| Constant | Value |
|---|---|
OPWA_VERSION | '1.0.0' |
OPWA_PATH | Absolute path to plugin directory |
OPWA_URL | URL to plugin directory |
OPWA_OPTION | 'opwa_settings' (wp_options key) |
OPWA_DB_VERSION | '1.0' |
