# wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce architecture

> Architecture diagram of the GitHub repository wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce
- Repository: https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce

## Overview

1. **This is a WordPress/WooCommerce plugin, not a standalone app.**  
   The shipped code lives under `src/` and is activated through the main plugin bootstrap file `src/wpwing-smart-wishlist-product-waitlist-for-woocommerce.php`. Everything else in the repo is either supporting runtime code, build/dev tooling, or tests.

2. **The plugin is split into four main runtime layers: Core, Admin, Frontend, and feature modules.**  
   - `Core/` handles lifecycle, persistence, settings, cron, GDPR, and deletion hooks.  
   - `Admin/` contains WordPress dashboard pages and list tables.  
   - `Frontend/` handles conditional CSS/JS loading.  
   - `Wishlist/` and `Waitlist/` contain the actual user-facing feature flows.

3. **Core is the orchestration boundary.**  
   `Core/Plugin.php` is the central boot sequence/singleton that wires hooks and loads the rest of the plugin. `Activator.php` creates data structures on activation, `Settings.php` wraps WordPress options, `Database.php` centralizes table naming, and `Cron.php` schedules cleanup tasks. `GdprHandler.php` and `ProductDeleteHandler.php` connect the plugin to WordPress compliance and product lifecycle events.

4. **The plugin uses custom database tables instead of storing everything in post meta.**  
   The README explicitly calls out “custom database tables for performance.” That means the key architectural boundary is between WordPress/WooCommerce native entities (products, users, sessions, options) and plugin-owned tables used for wishlist and waitlist records. This is important for diagramming because the plugin is not just a thin UI layer; it owns its own persistence model.

5. **Wishlist and waitlist are separate feature pipelines with similar structure.**  
   Each feature has:  
   - a frontend renderer,  
   - an AJAX controller,  
   - and a guest merge handler for logged-out users who later authenticate.  
   Wishlist lives in `src/app/Wishlist/`, waitlist in `src/app/Waitlist/`. This separation matters because they are related but independent data flows.

6. **Frontend interaction is mostly AJAX-driven and uses small asset bundles.**  
   `assets/js/wpwing-wishlist.js` and `assets/js/wpwing-waitlist.js` handle client-side requests. `Frontend/Assets.php` enqueues the shared CSS/JS only when needed, keeping the plugin lightweight. The frontend PHP templates in `src/templates/` render the shortcode/UI markup that these scripts enhance.

7. **The wishlist flow is centered on product intent capture.**  
   `FrontendWishlist.php` renders the wishlist button/shortcode output, `WishlistController.php` processes toggle/check requests, and `GuestMergeHandler.php` merges guest selections into a user account after login. `AdminWishlist.php` provides an admin-side view of stored wishlist data.

8. **The waitlist flow is centered on back-in-stock subscription and notification.**  
   `FrontendWaitlist.php` renders the email capture form and shortcode output, `WaitlistController.php` handles join/leave actions and downstream notifications, and `GuestMergeHandler.php` preserves anonymous intent across login. The templates `waitlist-form.php` and `waitlist-view.php` define the markup boundary for this feature.

9. **Admin functionality is operational, not content-authoring.**  
   `AdminMenu.php` adds plugin pages to the WordPress dashboard, `AdminSettings.php` exposes settings screens, `AdminWaitlist.php` surfaces waitlist entries, and `WelcomeNotice.php` handles a one-time activation notice. This subsystem is for configuration and operational oversight rather than end-user shopping behavior.

10. **The plugin integrates with WooCommerce and WordPress lifecycle events.**  
   Key cross-cutting triggers are activation, product deletion, login/guest merge, cron, and GDPR export/erasure hooks. Those are the main edges where the plugin connects into the host platform, so an architecture diagram should show these as event-driven integrations rather than direct user-facing services.

11. **Repository tooling is split cleanly from runtime code.**  
   Root-level `composer.json`, `Makefile`, PHPCS/PHPStan config, PHPUnit, and Playwright are dev/test tooling. `docker-compose.yml` plus `docker/` provide a local WordPress/PHP/Caddy environment. `dist/` is the release artifact boundary, while `tests/` cover unit and end-to-end behavior.

12. **Net effect: one plugin, two customer-intent products, shared infrastructure.**  
   The shared infrastructure is the important architectural idea: both wishlist and waitlist use the same plugin bootstrap, settings, assets pipeline, admin shell, and lifecycle handlers, while keeping their UI and controllers separate. That makes the diagram naturally split into a common core with two feature branches feeding a shared persistence layer.

Main entry points: [`src/app/Core/Plugin.php`](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Plugin.php) (Core plugin), [`src/app/Core/Database.php`](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Database.php) (Database), [`src/app/Frontend/Assets.php`](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Frontend/Assets.php) (Assets loader), [`src/wpwing-smart-wishlist-product-waitlist-for-woocommerce.php`](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/wpwing-smart-wishlist-product-waitlist-for-woocommerce.php) (Plugin bootstrap)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime"]
  node_bootstrap["Plugin bootstrap<br/>entrypoint"]
end

subgraph group_core["Core"]
  node_plugin["Core plugin<br/>singleton orchestration<br/>[Plugin.php]"]
  node_activator["Activator<br/>activation setup<br/>[Activator.php]"]
  node_settings["Settings<br/>options wrapper<br/>[Settings.php]"]
  node_database[("Database<br/>table naming<br/>[Database.php]")]
  node_cron["Cron<br/>scheduled tasks<br/>[Cron.php]"]
  node_gdpr["GDPR handler<br/>compliance hooks<br/>[GdprHandler.php]"]
  node_product_delete["Product delete<br/>lifecycle hook"]
end

subgraph group_admin["Admin"]
  node_admin_menu["Admin menu<br/>dashboard navigation<br/>[AdminMenu.php]"]
  node_admin_settings["Admin settings<br/>settings UI<br/>[AdminSettings.php]"]
  node_admin_waitlist["Waitlist admin<br/>admin table<br/>[AdminWaitlist.php]"]
  node_welcome_notice["Welcome notice<br/>activation notice<br/>[WelcomeNotice.php]"]
end

subgraph group_frontend["Frontend"]
  node_assets["Assets loader<br/>conditional enqueue<br/>[Assets.php]"]
  node_templates["Templates<br/>markup layer"]
  node_public_css["Public CSS<br/>stylesheet<br/>[wpwing-public.css]"]
  node_wishlist_js["Wishlist JS<br/>client script<br/>[wpwing-wishlist.js]"]
  node_waitlist_js["Waitlist JS<br/>client script<br/>[wpwing-waitlist.js]"]
end

subgraph group_wishlist["Wishlist"]
  node_wishlist_frontend["Wishlist frontend<br/>ui renderer"]
  node_wishlist_controller["Wishlist controller<br/>ajax controller"]
  node_wishlist_merge["Wishlist merge<br/>guest merge"]
  node_wishlist_admin["Wishlist admin<br/>admin view<br/>[AdminWishlist.php]"]
end

subgraph group_waitlist["Waitlist"]
  node_waitlist_frontend["Waitlist frontend<br/>ui renderer"]
  node_waitlist_controller["Waitlist controller<br/>ajax controller"]
  node_waitlist_merge["Waitlist merge<br/>guest merge"]
end

subgraph group_tooling["Tooling"]
  node_build_tooling{{"Build & QA<br/>dev tooling"}}
end

node_bootstrap -->|"loads"| node_plugin
node_plugin -->|"activation"| node_activator
node_plugin -->|"config"| node_settings
node_plugin -->|"persistence"| node_database
node_plugin -->|"schedules"| node_cron
node_plugin -->|"compliance"| node_gdpr
node_plugin -->|"hooks"| node_product_delete
node_plugin -->|"admin"| node_admin_menu
node_plugin -->|"admin"| node_admin_settings
node_plugin -->|"admin"| node_admin_waitlist
node_plugin -->|"admin"| node_welcome_notice
node_plugin -->|"frontend"| node_assets
node_plugin -->|"feature"| node_wishlist_frontend
node_plugin -->|"feature"| node_wishlist_controller
node_plugin -->|"feature"| node_wishlist_merge
node_plugin -->|"admin"| node_wishlist_admin
node_plugin -->|"feature"| node_waitlist_frontend
node_plugin -->|"feature"| node_waitlist_controller
node_plugin -->|"feature"| node_waitlist_merge
node_wishlist_frontend -->|"renders"| node_templates
node_waitlist_frontend -->|"renders"| node_templates
node_assets -->|"enqueues"| node_public_css
node_assets -->|"enqueues"| node_wishlist_js
node_assets -->|"enqueues"| node_waitlist_js
node_wishlist_controller -->|"reads/writes"| node_database
node_waitlist_controller -->|"reads/writes"| node_database
node_wishlist_merge -->|"merges"| node_database
node_waitlist_merge -->|"merges"| node_database
node_admin_settings -->|"uses"| node_settings
node_admin_waitlist -->|"queries"| node_database
node_build_tooling -.->|"packages"| node_bootstrap

click node_bootstrap "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/wpwing-smart-wishlist-product-waitlist-for-woocommerce.php"
click node_plugin "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Plugin.php"
click node_activator "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Activator.php"
click node_settings "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Settings.php"
click node_database "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Database.php"
click node_cron "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Cron.php"
click node_gdpr "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/GdprHandler.php"
click node_product_delete "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/ProductDeleteHandler.php"
click node_admin_menu "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/AdminMenu.php"
click node_admin_settings "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/AdminSettings.php"
click node_admin_waitlist "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/AdminWaitlist.php"
click node_welcome_notice "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/WelcomeNotice.php"
click node_assets "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Frontend/Assets.php"
click node_wishlist_frontend "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/FrontendWishlist.php"
click node_wishlist_controller "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/WishlistController.php"
click node_wishlist_merge "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/GuestMergeHandler.php"
click node_wishlist_admin "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/AdminWishlist.php"
click node_waitlist_frontend "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Waitlist/FrontendWaitlist.php"
click node_waitlist_controller "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Waitlist/WaitlistController.php"
click node_waitlist_merge "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Waitlist/GuestMergeHandler.php"
click node_templates "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/tree/master/src/templates"
click node_public_css "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/assets/css/wpwing-public.css"
click node_wishlist_js "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/assets/js/wpwing-wishlist.js"
click node_waitlist_js "https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/assets/js/wpwing-waitlist.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bootstrap,node_build_tooling toneBlue
class node_plugin,node_activator,node_settings,node_database,node_cron,node_gdpr,node_product_delete toneAmber
class node_admin_menu,node_admin_settings,node_admin_waitlist,node_welcome_notice toneMint
class node_assets,node_templates,node_public_css,node_wishlist_js,node_waitlist_js toneRose
class node_wishlist_frontend,node_wishlist_controller,node_wishlist_merge,node_wishlist_admin toneIndigo
class node_waitlist_frontend,node_waitlist_controller,node_waitlist_merge toneTeal
```

## Components

### Runtime

Plugin bootstrap and shared execution shell

- [Plugin bootstrap](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/wpwing-smart-wishlist-product-waitlist-for-woocommerce.php): entrypoint · Main plugin file that loads the runtime · `src/wpwing-smart-wishlist-product-waitlist-for-woocommerce.php`

### Core

Lifecycle, persistence, and host integrations

- [Core plugin](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Plugin.php): singleton orchestration · Central boot sequence that wires hooks and loads subsystems · `src/app/Core/Plugin.php`
- [Activator](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Activator.php): activation setup · Creates plugin data structures on activation · `src/app/Core/Activator.php`
- [Settings](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Settings.php): options wrapper · Encapsulates WordPress options and plugin settings · `src/app/Core/Settings.php`
- [Database](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Database.php): table naming · Centralizes custom table names and persistence access · `src/app/Core/Database.php`
- [Cron](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/Cron.php): scheduled tasks · Registers cleanup and maintenance jobs · `src/app/Core/Cron.php`
- [GDPR handler](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/GdprHandler.php): compliance hooks · Connects export and erasure flows to WordPress GDPR APIs · `src/app/Core/GdprHandler.php`
- [Product delete](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Core/ProductDeleteHandler.php): lifecycle hook · Handles product deletion cleanup and related sync · `src/app/Core/ProductDeleteHandler.php`

### Admin

WordPress dashboard surfaces

- [Admin menu](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/AdminMenu.php): dashboard navigation · Adds plugin pages to the WordPress admin · `src/app/Admin/AdminMenu.php`
- [Admin settings](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/AdminSettings.php): settings UI · Renders configuration screens in the dashboard · `src/app/Admin/AdminSettings.php`
- [Waitlist admin](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/AdminWaitlist.php): admin table · Surfaces stored waitlist entries for operations · `src/app/Admin/AdminWaitlist.php`
- [Welcome notice](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Admin/WelcomeNotice.php): activation notice · Shows the one-time onboarding notice after activation · `src/app/Admin/WelcomeNotice.php`

### Frontend

Conditional asset loading

- [Assets loader](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Frontend/Assets.php): conditional enqueue · Loads shared CSS and JS only when needed · `src/app/Frontend/Assets.php`
- [Templates](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/tree/master/src/templates): markup layer · PHP view templates for wishlist and waitlist UI · `src/templates`
- [Public CSS](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/assets/css/wpwing-public.css): stylesheet · Shared public-facing styles · `src/assets/css/wpwing-public.css`
- [Wishlist JS](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/assets/js/wpwing-wishlist.js): client script · Client-side wishlist interactions and AJAX requests · `src/assets/js/wpwing-wishlist.js`
- [Waitlist JS](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/assets/js/wpwing-waitlist.js): client script · Client-side waitlist interactions and AJAX requests · `src/assets/js/wpwing-waitlist.js`

### Wishlist

Wishlist feature pipeline

- [Wishlist frontend](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/FrontendWishlist.php): ui renderer · Renders wishlist button and shortcode output · `src/app/Wishlist/FrontendWishlist.php`
- [Wishlist controller](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/WishlistController.php): ajax controller · Processes wishlist toggle and check requests · `src/app/Wishlist/WishlistController.php`
- [Wishlist merge](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/GuestMergeHandler.php): guest merge · Merges anonymous wishlist state after login · `src/app/Wishlist/GuestMergeHandler.php`
- [Wishlist admin](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Wishlist/AdminWishlist.php): admin view · Displays wishlist data in the admin context · `src/app/Wishlist/AdminWishlist.php`

### Waitlist

Waitlist feature pipeline

- [Waitlist frontend](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Waitlist/FrontendWaitlist.php): ui renderer · Renders waitlist form and shortcode output · `src/app/Waitlist/FrontendWaitlist.php`
- [Waitlist controller](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Waitlist/WaitlistController.php): ajax controller · Handles join, leave, and notification workflows · `src/app/Waitlist/WaitlistController.php`
- [Waitlist merge](https://github.com/wpwing-dev/wpwing-smart-wishlist-product-waitlist-for-woocommerce/blob/master/src/app/Waitlist/GuestMergeHandler.php): guest merge · Preserves anonymous waitlist intent across login · `src/app/Waitlist/GuestMergeHandler.php`

### Tooling

Build, environment, and test support

- **Build & QA**: dev tooling · Composer, coding standards, static analysis, and test harnesses

## Connections

- Plugin bootstrap → Core plugin: loads · Main plugin file initializes the core singleton
- Core plugin → Activator: activation · Registers activation-time setup
- Core plugin → Settings: config · Wires plugin settings and options
- Core plugin → Database: persistence · Uses plugin-owned table naming and storage boundaries
- Core plugin → Cron: schedules · Registers recurring maintenance tasks
- Core plugin → GDPR handler: compliance · Connects GDPR export and erasure handlers
- Core plugin → Product delete: hooks · Listens for product lifecycle cleanup events
- Core plugin → Admin menu: admin · Bootstraps dashboard navigation
- Core plugin → Admin settings: admin · Exposes configuration screens
- Core plugin → Waitlist admin: admin · Loads operational waitlist views
- Core plugin → Welcome notice: admin · Triggers the onboarding notice
- Core plugin → Assets loader: frontend · Registers conditional asset loading
- Core plugin → Wishlist frontend: feature · Initializes wishlist UI flow
- Core plugin → Wishlist controller: feature · Registers wishlist AJAX handling
- Core plugin → Wishlist merge: feature · Attaches guest-to-user merge logic
- Core plugin → Wishlist admin: admin · Connects wishlist operational view
- Core plugin → Waitlist frontend: feature · Initializes waitlist UI flow
- Core plugin → Waitlist controller: feature · Registers waitlist AJAX handling
- Core plugin → Waitlist merge: feature · Attaches guest-to-user merge logic
- Wishlist frontend → Templates: renders · Uses shared PHP templates for markup
- Waitlist frontend → Templates: renders · Uses shared PHP templates for markup
- Assets loader → Public CSS: enqueues · Loads shared styles when feature UI is present
- Assets loader → Wishlist JS: enqueues · Loads wishlist client bundle on demand
- Assets loader → Waitlist JS: enqueues · Loads waitlist client bundle on demand
- Wishlist controller → Database: reads/writes · Persists wishlist records in custom tables
- Waitlist controller → Database: reads/writes · Persists waitlist records in custom tables
- Wishlist merge → Database: merges · Reconciles guest wishlist state into user records
- Waitlist merge → Database: merges · Reconciles guest waitlist state into user records
- Admin settings → Settings: uses · Reads and updates plugin configuration
- Waitlist admin → Database: queries · Displays stored waitlist entries
- Build & QA → Plugin bootstrap: packages · Supports the shipped plugin artifact
