heraspec 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -103
  3. package/bin/heraspec.js +4805 -1122
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -76
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. package/package.json +75 -72
@@ -0,0 +1,137 @@
1
+ ## 1. Executive Summary
2
+
3
+ - [Observed | High] The codebase is a CodeIgniter 4 monolith with plugin-based extensibility. Evidence: `index.php` (`$minPhpVersion = '8.1'`, `CodeIgniter\Boot::bootWeb()`), core app in `app/`, plugins in `plugins/`.
4
+ - [Observed | High] `data_builder` is deeply integrated as a first-class plugin providing REST, GraphQL, API token management, webhooks, and public API docs/sandbox flows. Evidence: `plugins/data_builder/index.php`, `plugins/data_builder/config/Routes.php`, controllers `Db_resources`, `Db_graphql`, `Public_api_docs`, `Webhooks`.
5
+ - [Observed | High] Runtime coupling is high because base controllers preload many models and settings globally. Evidence: `app/Controllers/App_Controller.php` (`get_models_array()` and eager model loading), `app/Controllers/Security_Controller.php`.
6
+ - [Inferred | Medium] Integration readiness is strong for API-first extensions, but operational hardening is uneven due broad CSRF exclusions and mixed legacy compatibility layers. Evidence: `app/Config/Filters.php`, `app/Config/Rise.php`, `plugins/data_builder/Helpers/*CI3*` wrappers.
7
+ - [Assumed | Low] This repository is the Rise CRM target for migration/integration work from another stack; direct Laravel runtime artifacts are not present. Evidence: missing `artisan`, `bootstrap/app.php`, `routes/web.php` in repo root.
8
+
9
+ ## 2. Technology Profile
10
+
11
+ - [Observed | High] Language/runtime: PHP with CodeIgniter 4 bootstrap, minimum PHP 8.1. Evidence: `index.php`.
12
+ - [Observed | High] Application versioning is managed in Rise config (`3.9.6`). Evidence: `app/Config/Rise.php` (`app_settings_array['app_version']`).
13
+ - [Observed | High] Default data store is MySQL via MySQLi with DB prefix `rise_`. Evidence: `app/Config/Database.php` (`DBDriver = MySQLi`, `DBPrefix = rise_`).
14
+ - [Observed | High] Session persistence uses database-backed sessions (`ci_sessions`). Evidence: `app/Config/Session.php` (`DatabaseHandler`, `savePath = ci_sessions`).
15
+ - [Observed | High] Cache defaults to filesystem handler. Evidence: `app/Config/Cache.php` (`handler = file`).
16
+ - [Observed | High] Root dependency manifests are absent; dependency management is partially embedded (core `app/ThirdParty`) and partially plugin-local. Evidence: missing root `composer.json`/`package.json`; present `plugins/data_builder/composer.json`, `plugins/data_builder/package.json`, `app/ThirdParty/*`.
17
+ - [Observed | High] Data Builder adds GraphQL runtime dependency `webonyx/graphql-php` and frontend build toolchain (webpack/babel, Chart.js). Evidence: `plugins/data_builder/composer.json`, `plugins/data_builder/package.json`.
18
+
19
+ ## 3. Repository Topology
20
+
21
+ - [Observed | High] Major root directories: `app`, `assets`, `plugins`, `system`, `writable`, `install`, `updates`, `_analytics`. Evidence: root directory listing.
22
+ - [Observed | High] Core MVC footprint is large (`app/Controllers`: 92 files, `app/Models`: 95 files), indicating mature monolith breadth. Evidence: file counts collected from `app/Controllers`, `app/Models`.
23
+ - [Observed | High] Data Builder plugin is modularized by concerns (`Controllers`, `Models`, `Libraries`, `Views`, `config`, `install`, `migrations`, `vendor`, `dist`). Evidence: `plugins/data_builder/*` structure.
24
+ - [Observed | High] Embedded third-party providers include Google, Stripe, Pusher, TCPDF, PhpSpreadsheet, reCAPTCHA. Evidence: `app/ThirdParty/*` directories.
25
+
26
+ ## 4. Architecture and Dependency Flow
27
+
28
+ - [Observed | High] Boot flow: front controller -> CI bootstrap -> pre-system event -> plugin loading/hooks. Evidence: `index.php`; `app/Config/Events.php` (`Events::on('pre_system', ...)`, `load_plugin_indexes()`).
29
+ - [Observed | High] Activated plugins are auto-registered into PSR-4 namespaces at startup. Evidence: `app/Config/Autoload.php` (`load_activated_plugins()`).
30
+ - [Observed | High] Routing combines explicit routes and dynamic controller scanning at core level. Evidence: `app/Config/Routes.php` (directory scan of `app/Controllers`).
31
+ - [Observed | High] Data Builder routes are registered during plugin bootstrap and include both admin and public endpoints. Evidence: `plugins/data_builder/index.php` (`data_builder_register_routes()`), `plugins/data_builder/config/Routes.php`.
32
+ - [Observed | High] API controllers inherit a compatibility base that wraps CI4 services into CI3-style interfaces for legacy module code. Evidence: `plugins/data_builder/Controllers/Base_controller.php`, `plugins/data_builder/Helpers/CI3_Instance_Compat.php`.
33
+ - [Inferred | Medium] Dependency direction is mostly top-down (controllers -> models/libraries/helpers), but global helper and hook access patterns increase hidden coupling and side effects. Evidence: `app/Helpers/plugin_helper.php`, heavy global helper usage in controllers.
34
+
35
+ ## 5. Coding Style and Conventions
36
+
37
+ - [Observed | High] Naming style is mixed legacy and modern (`snake_case` model names, CI-style controllers, namespaced classes). Evidence: `App_Controller.php`, `Permission_manager.php`, plugin `Db_*` classes.
38
+ - [Observed | High] Plugin code uses dense inline documentation and defensive runtime guards, especially in API middleware and webhook components. Evidence: `Db_api_base.php`, `Db_api_middleware.php`, `WebhookEventBus.php`.
39
+ - [Observed | Medium] Error handling strategy in Data Builder is centralized around structured API responses and an error registry. Evidence: `Db_api_response.php`, `ErrorRegistry.php`.
40
+ - [Observed | Medium] Core and plugin both rely on direct `echo/json_encode` and header operations in many controllers, reducing consistency with response abstractions. Evidence: multiple controller methods in `plugins/data_builder/Controllers/*` and core controllers.
41
+ - [Observed | High] No first-party test suite is present in repository root. Evidence: missing `tests/` directory and missing root phpunit config.
42
+ - [Inferred | Medium] Maintainability risk is elevated by mixed framework idioms (CI4 + CI3 compat layer) and very large base controllers.
43
+
44
+ ## 6. Extension Points (Modules/Themes/Plugins/Hooks)
45
+
46
+ - [Observed | High] Plugin lifecycle hooks are available for install/activate/deactivate/uninstall/update. Evidence: `app/Helpers/plugin_helper.php` (`register_installation_hook`, `register_activation_hook`, etc.).
47
+ - [Observed | High] Data Builder uses lifecycle hooks to install schema and register routes. Evidence: `plugins/data_builder/index.php` hook registrations.
48
+ - [Observed | High] Core supports app-wide hook/filter injection via PHP-Hooks wrapper. Evidence: `app/Config/Events.php` (loads `PHP-Hooks`), `app/Helpers/plugin_helper.php` (`app_hooks()`).
49
+ - [Observed | High] UI extension point exists for admin sidebar composition through hook filters. Evidence: `plugins/data_builder/index.php` (`app_filter_staff_left_menu`).
50
+ - [Observed | Medium] CSRF exclusion patterns are extensible through filter hook and are modified by plugin at bootstrap. Evidence: `app/Config/Rise.php` constructor filter, `plugins/data_builder/index.php` add_filter for API/docs/embed URIs.
51
+
52
+ ## 7. API and Interaction Surfaces
53
+
54
+ - [Observed | High] Public docs/UI surface: `/api_docs` with endpoint registry, code samples, Postman/OpenAPI export, and webhook simulator. Evidence: `plugins/data_builder/config/Routes.php`, `Public_api_docs.php`.
55
+ - [Observed | High] REST surface: `/api/v1/*` and alias `/data_builder/api/*` with resource, report, schema, and aggregate endpoints. Evidence: `plugins/data_builder/config/Routes.php`, `Db_resources.php`, `Db_views.php`.
56
+ - [Observed | High] GraphQL surface: `/api/v1/graphql` POST-only with depth/complexity controls and optional introspection restriction. Evidence: `Db_graphql.php`, `Libraries/api/Db_graphql_schema.php`.
57
+ - [Observed | High] Outbound webhook surface: subscription CRUD, test dispatch, live simulator, delivery logs. Evidence: `Webhooks.php`, `WebhookEventBus.php`, `HttpChannel.php`.
58
+ - [Observed | High] Inbound webhook surface exists in core for external systems (GitHub/Bitbucket/Stripe subscription events). Evidence: `app/Controllers/Webhooks_listener.php`.
59
+ - [Observed | Medium] Scheduled/background execution relies on HTTP-triggered cron controller, not a dedicated queue worker architecture. Evidence: `app/Controllers/Cron.php`.
60
+
61
+ ## 8. Data Model and State Management
62
+
63
+ - [Observed | High] Core DB migrations/seeds are effectively empty placeholders (`.gitkeep`), while plugin owns explicit schema SQL and versioned migrations. Evidence: `app/Database/Migrations/.gitkeep`, `app/Database/Seeds/.gitkeep`, `plugins/data_builder/install/database.sql`, `plugins/data_builder/migrations/*`.
64
+ - [Observed | High] Data Builder persists API tokens, API logs, rate counters, report metadata, relations, and webhook subscriptions/logs in dedicated tables. Evidence: `plugins/data_builder/install/database.sql` (`data_builder_api_*`, `polydb_*` tables).
65
+ - [Observed | High] API write operations in Data Builder use transaction boundaries around mutating operations. Evidence: `Db_resources.php` (`trans_start`, `trans_complete`, rollback paths).
66
+ - [Observed | Medium] Table prefix abstraction is consistently applied (`db_prefix()`), aiding multi-install portability. Evidence: plugin migration/install scripts and helper wrappers.
67
+ - [Inferred | Medium] Data consistency is generally robust within single-request CRUD paths; cross-module consistency depends on model hooks and side effects not centrally orchestrated.
68
+
69
+ ## 9. Security Posture
70
+
71
+ - [Observed | High] Core authentication/authorization is session-centric with role/permission gates in `Security_Controller` and `Permission_manager`. Evidence: `app/Controllers/Security_Controller.php`, `app/Libraries/Permission_manager.php`.
72
+ - [Observed | High] Data Builder API applies an explicit middleware chain: DDoS shield, CORS, admin-session bypass, auth gate, rate limiter, scope verifier, request logger. Evidence: `Db_api_base.php`, `Db_api_middleware.php`, middleware classes.
73
+ - [Observed | High] API token security includes scopes, table/view constraints, per-table CRUD permissions, HMAC signature validation, and anti-replay timestamp window. Evidence: `AuthGateMiddleware.php`, `ScopeVerifierMiddleware.php`, token schema in migrations.
74
+ - [Observed | High] API observability includes two-phase request logging and sensitive-field redaction. Evidence: `RequestLoggerMiddleware.php`, `Api_log_finalizer.php`, `Log_redactor.php`.
75
+ - [Observed | High] Public webhook simulator includes SSRF guard against localhost/private/reserved targets. Evidence: `Public_api_docs.php` (`_validate_webhook_simulator_target`, `_is_public_ip`).
76
+ - [Observed | Medium] CSRF filter is not globally enabled and relies on exclusion lists and endpoint-specific handling. Evidence: `app/Config/Filters.php` (`'csrf'` commented), `app/Config/Rise.php` exclusions, plugin-added exclusions in `plugins/data_builder/index.php`.
77
+ - [Observed | Medium] Core payment library code contains TLS verification disabled in some cURL paths, which is a material transport-security risk if unchanged in production. Evidence: `app/Libraries/Paypal.php` (`CURLOPT_SSL_VERIFYPEER => false`).
78
+
79
+ ## 10. Integration Capability Matrix
80
+
81
+ | Domain | Entry Points | Required Adapters | Complexity | Risks | Confidence |
82
+ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------------------- | ---------- |
83
+ | External APIs | Core:`Google_api`, `Microsoft_api`, `Webhooks_listener`; Plugin: `/api/v1/*`, `/api_docs`, outbound webhooks | OAuth credential storage, API token issuance, endpoint-specific mappers | Medium | Credential sprawl, route exposure, vendor API drift | High |
84
+ | Authentication/SSO | Session auth in `Security_Controller`; token auth + HMAC in `AuthGateMiddleware` | Optional IdP bridge (OIDC/SAML) and token broker if enterprise SSO required | Medium-High | Mixed session/token contexts, bypass misconfiguration | Medium |
85
+ | Payment | `Paypal_redirect`, `Stripe_redirect`, `Paytm_redirect`, payment libraries | Payment gateway credential hardening, webhook signature verification standardization | Medium | TLS/cURL settings inconsistency, callback abuse if misconfigured | Medium |
86
+ | Messaging/Queue | Pusher integration (`Pusher_connect`), HTTP cron (`Cron`), webhook dispatch | Optional queue worker (Redis/RabbitMQ/SQS) for async retries/backoff | Medium | No first-class queue abstraction for heavy burst workloads | Medium |
87
+ | Storage/CDN | File/cache/session paths via `writable/`, `files/`, cache config | Object storage adapter (S3-compatible), CDN URL rewriting, signed URL strategy | Medium | Local disk coupling and backup/retention variability | Medium |
88
+ | Observability | API logs, webhook logs, activity logs, debug toolbar | Log shipping (ELK/Loki), metrics exporter, alert rules | Low-Medium | Fragmented telemetry across subsystems | High |
89
+ | Admin/UI customization | Hook/filter system (`app_hooks()`), plugin menu injection, plugin routes/views | Theme/view override conventions, stricter UI extension contracts | Low | Hook ordering collisions and undocumented custom hooks | High |
90
+ | Content/data migration | Plugin SQL installer + migrations, API docs export (Postman/OpenAPI), builder/template persistence | ETL scripts, schema-diff tooling, migration playbooks | Medium-High | Limited root migration automation and weak test safety net | Medium |
91
+
92
+ ## 11. Strengths, Weaknesses, Risks
93
+
94
+ - [Observed | High] Strength: Clear plugin extensibility model with lifecycle hooks and route/menu injection points. Mitigation leverage: continue shipping new modules as plugins to reduce core edits.
95
+ - [Observed | High] Strength: Data Builder API stack includes practical hardening features (rate limit, HMAC, scope checks, log redaction).
96
+ - [Observed | Medium] Weakness: Core controller layer is monolithic and preloads many dependencies, increasing bootstrap cost and change blast radius.
97
+ - [Observed | Medium] Weakness: Mixed CI4 + CI3 compatibility layer increases cognitive load and future upgrade complexity.
98
+ - [Observed | Medium] Risk: Broad CSRF exclusions and globally disabled csrf filter can expand attack surface if endpoint assumptions drift.
99
+ - [Observed | Medium] Risk: Dynamic route generation from controller directory can unintentionally expose actions when naming/visibility controls are inconsistent.
100
+ - [Observed | Medium] Risk: No first-party automated tests detected; regression detection relies heavily on manual QA.
101
+ - [Observed | Medium] Risk: Payment integration TLS options in legacy library code require review before production hardening.
102
+
103
+ ## 12. Top 10 Evidence Items
104
+
105
+ 1. [Observed | High] CI4 runtime and minimum PHP: `index.php` (`$minPhpVersion = '8.1'`, `Boot::bootWeb`).
106
+ 2. [Observed | High] Application version and CSRF exclusion baseline: `app/Config/Rise.php`.
107
+ 3. [Observed | High] Dynamic core route registration: `app/Config/Routes.php` (controller directory scan).
108
+ 4. [Observed | High] Plugin loading at bootstrap and hook init: `app/Config/Events.php` + `app/Config/Autoload.php`.
109
+ 5. [Observed | High] Hook/lifecycle extension APIs: `app/Helpers/plugin_helper.php`.
110
+ 6. [Observed | High] Data Builder bootstrap and menu/CSRF integration: `plugins/data_builder/index.php`.
111
+ 7. [Observed | High] Full API route map (REST/GraphQL/docs/webhooks): `plugins/data_builder/config/Routes.php`.
112
+ 8. [Observed | High] Middleware security pipeline wiring: `plugins/data_builder/Controllers/Db_api_base.php` + `Libraries/api/middleware/*`.
113
+ 9. [Observed | High] Webhook dispatch architecture and delivery logging: `WebhookEventBus.php`, `channels/HttpChannel.php`, `Webhooks.php`.
114
+ 10. [Observed | High] Persistent schema for tokens/logs/rate/webhooks: `plugins/data_builder/install/database.sql` and `migrations/200_version_200.php`.
115
+
116
+ ## 13. Unknowns and Verification Plan
117
+
118
+ - [Assumed | Medium] Production deployment topology (single node vs load-balanced) is unknown. Verify by reviewing web server/proxy configs and session stickiness behavior.
119
+ - [Assumed | Medium] Secret management policy (env vars vs DB settings) is unclear. Verify by tracing `get_setting()` storage/encryption and backup handling.
120
+ - [Assumed | Medium] Real traffic/performance envelope for `/api/v1` and GraphQL is unknown. Verify with load tests and DB slow query profiling.
121
+ - [Assumed | Medium] Permission boundary correctness for every Data Builder admin screen is not fully proven. Verify via role-matrix test plan across non-admin staff.
122
+ - [Assumed | Low] Historical Laravel source parity requirements are not represented in this repo. Verify against external migration spec/change log.
123
+
124
+ ## 14. Recommended Next Actions (30/60/90 day)
125
+
126
+ - [30 days]
127
+ - [Observed | High] Create a regression smoke suite for critical paths: login, permissions, `/api/v1` read/write, GraphQL, webhook simulate/send, payment callbacks.
128
+ - [Observed | High] Tighten security baseline: review and minimize CSRF excludes; enable endpoint-level CSRF strategy documentation.
129
+ - [Observed | Medium] Patch legacy transport settings (e.g., PayPal cURL TLS verification path) and validate gateway callbacks end-to-end.
130
+ - [60 days]
131
+ - [Inferred | Medium] Refactor high-coupling controller bootstrap patterns by introducing slimmer service boundaries for new code.
132
+ - [Observed | Medium] Standardize response/error handling across plugin controllers to reduce direct `echo/json_encode` drift.
133
+ - [Observed | Medium] Add API contract tests from exported OpenAPI/Postman fixtures.
134
+ - [90 days]
135
+ - [Inferred | Medium] Introduce optional async job layer for webhook retries and heavy API tasks.
136
+ - [Inferred | Medium] Establish centralized observability pipeline (structured logs + metrics + alerts).
137
+ - [Inferred | Medium] Define upgrade-safe extension contracts (hook catalog, route policy, compatibility guidelines) for future modules.
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "php-laravel-botble",
3
+ "name": "Botble CMS",
4
+ "runtime": "php",
5
+ "runtimeVersion": "^8.3|^8.4",
6
+ "framework": "laravel",
7
+ "frameworkVersion": "^13.0",
8
+ "cms": "botble",
9
+ "cmsType": "modular-monolith",
10
+ "description": "Laravel-based modular CMS with plugin/theme architecture and WordPress-style hooks",
11
+ "keyFeatures": [
12
+ "Plugin/Theme architecture via platform/ directory",
13
+ "WordPress-style hook system (add_filter/add_action/apply_filters/do_action)",
14
+ "Sanctum API authentication",
15
+ "Multi-cloud media storage drivers (s3/r2/wasabi/bunnycdn/do_spaces/backblaze)",
16
+ "Data synchronize import/export tooling",
17
+ "Composer merge plugin for plugin/theme dependencies",
18
+ "Module-based repository pattern with DI",
19
+ "Admin extension via AdminHelper::registerRoutes"
20
+ ],
21
+ "directorySignature": [
22
+ "platform/core",
23
+ "platform/packages",
24
+ "platform/plugins",
25
+ "platform/themes"
26
+ ],
27
+ "composerSignature": [
28
+ "botble",
29
+ "wikimedia/composer-merge-plugin"
30
+ ],
31
+ "typicalPlugins": [
32
+ "analytics", "audit-log", "backup", "block", "blog",
33
+ "captcha", "contact", "cookie-consent", "custom-field",
34
+ "gallery", "language", "language-advanced", "member",
35
+ "request-log", "social-login", "translation"
36
+ ],
37
+ "analysisFile": "structure.md",
38
+ "lastUpdated": "2026-04-04"
39
+ }
@@ -0,0 +1,208 @@
1
+ ## Executive Summary
2
+ - [Inferred | High] Codebase nay la mot modular monolith tren Laravel + Botble, trong do `app/` giu vai tro shell mong va phan lon nghiep vu nam o `platform/core`, `platform/packages`, `platform/plugins`, `platform/themes`.
3
+ Evidence: `composer.json:14`, `composer.json:32`, `bootstrap/app.php:8`, `routes/web.php`.
4
+ - [Observed | High] Kha nang mo rong va tich hop cao nhờ plugin/theme architecture, hook/filter, API package, Social Login, media driver da cloud va data synchronization tooling.
5
+ Evidence: `platform/core/base/helpers/action-filter.php:8`, `platform/packages/plugin-management/src/Providers/PluginManagementServiceProvider.php:28`, `vendor/botble/api/routes/api.php:6`, `platform/core/media/src/Providers/MediaServiceProvider.php:159`, `vendor/botble/data-synchronize/src/Providers/DataSynchronizeServiceProvider.php:44`.
6
+ - [Observed | High] Rui ro chinh can uu tien: logic vo hieu hoa CSRF trong admin o production, `APP_DEBUG=true` khi `APP_ENV=production`, va tin hieu test coverage o root con mong.
7
+ Evidence: `platform/core/base/src/Providers/EventServiceProvider.php:197`, `.env:3`, `.env:4`, `phpunit.xml:17`, `tests/Feature/ExampleTest.php`.
8
+
9
+ ## Technology Profile
10
+ - [Observed | High] Backend: PHP `^8.3|^8.4`, Laravel `^13.0`, Botble API `^2.1`, Sanctum `^4.0`.
11
+ Evidence: `composer.json:8`, `composer.json:14`, `composer.json:32`, `composer.json:33`.
12
+ - [Observed | High] Plugin/theme dependency composition dung `wikimedia/composer-merge-plugin`, merge plugin/theme `composer.json` vao runtime.
13
+ Evidence: `composer.json:36`, `composer.json:98`, `composer.json:99`.
14
+ - [Observed | High] Frontend build theo `laravel-mix`, monorepo NPM workspaces cho core/packages/plugins/themes; co su dung Vue 3.
15
+ Evidence: `package.json:3`, `package.json:5`, `package.json:6`, `package.json:7`, `package.json:8`, `package.json:28`, `package.json:47`.
16
+ - [Observed | Medium] Tooling quality gate duoc khai bao o dependency (`larastan`, `pint`, `rector`, `phpunit`) nhung chua thay root config rieng cho phpstan/pint/rector.
17
+ Evidence: `composer.json:44`, `composer.json:47`, `composer.json:51`, `composer.json:52`.
18
+ - [Observed | Medium] Deployment local/dev co `docker-compose` theo Laravel Sail runtime 8.2 + MySQL 8.0; chua thay GitHub workflow o repo.
19
+ Evidence: `docker-compose.yml`, `__NO_GITHUB_WORKFLOWS__` (filesystem check).
20
+
21
+ ## Repository Topology
22
+ - [Observed | High] Root co cac nhom thu muc chinh: `app`, `config`, `routes`, `platform`, `resources`, `tests`, `vendor`, `_analytics`.
23
+ Evidence: root directory listing.
24
+ - [Observed | High] `platform` duoc to chuc theo 4 nhom lon:
25
+ - `core` (10 subdirs)
26
+ - `packages` (13 subdirs)
27
+ - `plugins` (17 subdirs)
28
+ - `themes` (1 subdir: `ripple`)
29
+ Evidence: `platform/` directory stats.
30
+ - [Observed | High] Plugins hien dien: `analytics`, `audit-log`, `backup`, `block`, `blog`, `captcha`, `contact`, `cookie-consent`, `custom-field`, `fob-comment`, `gallery`, `language`, `language-advanced`, `member`, `request-log`, `social-login`, `translation`.
31
+ Evidence: `platform/plugins/*` directory listing.
32
+ - [Observed | High] Surface route theo module rat lon: 44 route files trong `platform/**/routes` (34 `web.php`, 5 `api.php`) va 97 `*ServiceProvider.php`.
33
+ Evidence: recursive file counts.
34
+
35
+ ## Architecture and Dependency Flow
36
+ - [Observed | High] Bootstrap app-level chi tro route web/console va healthcheck; nghiep vu duoc delegated vao providers/module routes.
37
+ Evidence: `bootstrap/app.php:8-11`, `routes/web.php`.
38
+ - [Observed | High] Luong nap plugin:
39
+ 1. Lay manifest (`PluginManifest::getManifest`)
40
+ 2. Set PSR-4 namespace cho plugin active
41
+ 3. Register providers cua plugin active
42
+ Evidence: `platform/packages/plugin-management/src/Providers/PluginManagementServiceProvider.php:28`, `:33`, `:38`, `:43`.
43
+ - [Observed | High] Plugin manifest cache nam o `bootstrap/cache/plugins.php`, co co che regenerate khi mismatch.
44
+ Evidence: `platform/packages/plugin-management/src/PluginManifest.php:16`, `:24`, `:42`, `:50`.
45
+ - [Observed | High] Dependency direction theo mo hinh: Laravel shell -> Botble core/packages -> plugin/theme provider + routes + hooks.
46
+ Evidence: `bootstrap/cache/packages.php:22`, `:143`, `:198`, `platform/core/base/src/Traits/LoadAndPublishDataTrait.php:80`.
47
+ - [Observed | Medium] Su dung DI repository interface-to-implementation trong nhieu module (blog, media, contact, acl, ...), giam coupling truc tiep.
48
+ Evidence: `platform/plugins/blog/src/Providers/BlogServiceProvider.php:44`, `platform/core/media/src/Providers/MediaServiceProvider.php:50`, `platform/core/acl/src/Providers/AclServiceProvider.php:36`.
49
+
50
+ ## Coding Style and Conventions
51
+ - [Observed | High] Naming convention va namespace theo PSR-4, cau truc thu muc theo bounded module (`Http/Controllers`, `Models`, `Providers`, `Repositories`, `Tables`, `Forms`).
52
+ Evidence: `platform/plugins/blog/src/Http/Controllers/PostController.php`, `platform/plugins/blog/src/Models/Post.php`, `platform/plugins/blog/src/Repositories/Eloquent/PostRepository.php`.
53
+ - [Observed | Medium] Pattern su dung nhieu: ServiceProvider, Facade, Repository, trait-based module bootstrap (`LoadAndPublishDataTrait`).
54
+ Evidence: `platform/core/base/src/Traits/LoadAndPublishDataTrait.php:20`, `:80`.
55
+ - [Observed | Medium] Typed method signatures va typed properties duoc ap dung rong, nhung khong thay `declare(strict_types=1)` trong `app` va `platform`.
56
+ Evidence: strict-types scan result `__NONE__`.
57
+ - [Observed | Medium] Root PHPUnit chi include `tests/Unit`, `tests/Feature` va source `app`; 2 test root de dang, trong khi test trong `platform` co 28 files.
58
+ Evidence: `phpunit.xml:8-17`, `tests/Feature/ExampleTest.php`, recursive test counts.
59
+ - [Inferred | Medium] Quality tooling co kha nang manh tren ly thuyet, nhung co the chua enforce day du neu khong co config/CI pipeline dong bo.
60
+ Evidence: `composer.json:44`, `:47`, `:52`, `__NO_GITHUB_WORKFLOWS__`.
61
+
62
+ ## Extension Points (Modules/Themes/Plugins/Hooks)
63
+ - [Observed | High] Hook system kieu WordPress duoc implement native: `add_filter`, `add_action`, `apply_filters`, `do_action`.
64
+ Evidence: `platform/core/base/helpers/action-filter.php:8`, `:26`, `:37`, `:44`.
65
+ - [Observed | High] Hook usage rong trong he thong (dem scan): `add_filter` 153, `add_action` 45, `apply_filters` 247, `do_action` 85.
66
+ Evidence: recursive grep counts tren `platform`.
67
+ - [Observed | High] Lifecycle plugin day du: activate/deactivate/remove, dependency check, migration/assets/translations publish, manifest regen.
68
+ Evidence: `platform/packages/plugin-management/src/Services/PluginService.php:41`, `:228`, `:295`, `:409`, `:414`.
69
+ - [Observed | High] Theme extension point: route registration qua `Theme::registerRoutes`, `Theme::routes`; `theme.json` khai bao `required_plugins`.
70
+ Evidence: `platform/themes/ripple/routes/web.php:8`, `:20`, `platform/themes/ripple/theme.json:9`.
71
+ - [Observed | High] Admin extension point: da so module dang ky admin routes qua `AdminHelper::registerRoutes`.
72
+ Evidence: `platform/core/base/src/Helpers/AdminHelper.php:15`, multiple route files under `platform/**/routes/web.php`.
73
+
74
+ ## API and Interaction Surfaces
75
+ - [Observed | High] REST API core o `vendor/botble/api` voi prefix `api/v1`; auth layer su dung `auth:sanctum` cho protected endpoints.
76
+ Evidence: `vendor/botble/api/routes/api.php:6`, `:23`.
77
+ - [Observed | High] API middleware stack duoc push dong vao group `api`: `ApiEnabledMiddleware`, `ForceJsonResponseMiddleware`, optional `ApiKeyMiddleware`.
78
+ Evidence: `vendor/botble/api/src/Providers/ApiServiceProvider.php:62`, `:65`, `:69`.
79
+ - [Observed | High] Plugin APIs da mo san:
80
+ - Blog content API (`posts`, `categories`, `tags`)
81
+ - Contact API (`contacts`) + throttle `5,1`
82
+ - Social Login API (`api/v1/auth/*`)
83
+ Evidence: `platform/plugins/blog/routes/api.php`, `platform/plugins/contact/routes/api.php:10`, `platform/plugins/social-login/routes/api.php`.
84
+ - [Observed | High] CLI surface lon (82 command classes scan), nhieu command namespace `cms:*` cho maintenance/integration.
85
+ Evidence: command class scan; `platform/core/base/src/Commands/UpdateCommand.php`, `platform/packages/plugin-management/src/Commands/PluginDiscoverCommand.php`, `vendor/botble/api/src/Commands/GenerateDocumentationCommand.php`.
86
+ - [Observed | High] Async va schedule surfaces co san: ShouldQueue listeners/jobs + scheduled prune/cleanup/refresh.
87
+ Evidence: `platform/plugins/request-log/src/Providers/CommandServiceProvider.php:24`, `platform/plugins/audit-log/src/Providers/AuditLogServiceProvider.php:65`, `platform/core/media/src/Providers/MediaServiceProvider.php:259`.
88
+ - [Observed | High] Khong thay GraphQL/webhook route footprint trong quet source hien tai.
89
+ Evidence: grep result `__NONE__` cho patterns `graphql|lighthouse|rebing` va `webhook` tren `app/platform/vendor/botble/api`.
90
+
91
+ ## Data Model and State Management
92
+ - [Observed | High] Data layer chinh su dung Eloquent + migration theo module/plugin.
93
+ Evidence: `platform/plugins/blog/src/Models/Post.php`, `platform/plugins/blog/database/migrations/2015_06_18_033822_create_blog_table.php`.
94
+ - [Observed | High] So luong migration da dang ky: root `7`, platform `83`, vendor API `5`.
95
+ Evidence: migration file counts.
96
+ - [Observed | High] Trang thai plugin/theme/API duoc luu trong `settings` table (`activated_plugins`, `theme`, `api_enabled`).
97
+ Evidence: `database.sql:1798`.
98
+ - [Observed | Medium] Runtime drivers trong `.env` hien tai: cache/file, queue/sync, session/file, db/mysql.
99
+ Evidence: `.env:11`, `.env:12`, `.env:13`, `.env:36`.
100
+ - [Observed | Medium] Data migration/import-export capability da co package rieng (`data-synchronize`) voi route UI + command import/export/chunk cleanup.
101
+ Evidence: `vendor/botble/data-synchronize/routes/web.php:11`, `vendor/botble/data-synchronize/src/Providers/DataSynchronizeServiceProvider.php:44`.
102
+
103
+ ## Security Posture
104
+ - [Observed | High] AuthN API dua tren Sanctum, co `auth:sanctum` gate cho protected endpoints.
105
+ Evidence: `vendor/botble/api/routes/api.php:23`, `bootstrap/cache/packages.php:225`.
106
+ - [Observed | High] API gate bo sung: co the tat API toan cuc (`ApiEnabledMiddleware`) va bat buoc `X-API-KEY` khi cau hinh.
107
+ Evidence: `vendor/botble/api/src/Http/Middleware/ApiEnabledMiddleware.php:14`, `vendor/botble/api/src/Http/Middleware/ApiKeyMiddleware.php:19`.
108
+ - [Observed | High] XSS sanitation co su dung purifier qua `BaseHelper::clean` (co the bypass neu bat `enable_less_secure_web`).
109
+ Evidence: `platform/core/base/src/Helpers/BaseHelper.php:373`, `:375`, `:390`, `platform/core/base/config/general.php:462`.
110
+ - [Observed | High] HTTP security headers duoc set qua middleware (`nosniff`, `SAMEORIGIN`, `X-XSS-Protection`, `Referrer-Policy`).
111
+ Evidence: `platform/core/base/src/Http/Middleware/HttpSecurityHeaders.php:18-21`.
112
+ - [Observed | High] Co rate-limit muc tieu cho endpoint tiep xuc public (`throttle:5,1`).
113
+ Evidence: `platform/plugins/contact/routes/api.php:10`.
114
+ - [Observed | High] Rui ro lon: CSRF verification co the bi disable trong admin khi moi truong la production.
115
+ Evidence: `platform/core/base/src/Providers/EventServiceProvider.php:197`, `:199`; `platform/core/base/src/Helpers/AdminHelper.php:23`.
116
+ - [Observed | High] Rui ro cau hinh: `.env` hien tai de `APP_ENV=production` va `APP_DEBUG=true`.
117
+ Evidence: `.env:4`, `.env:3`.
118
+ - [Inferred | Medium] Co observability su co qua hook site error -> request-log event, va audit event listeners cho login/content.
119
+ Evidence: `platform/core/base/src/Exceptions/Handler.php:45`, `platform/plugins/request-log/src/Providers/HookServiceProvider.php:25`, `platform/plugins/audit-log/src/Providers/EventServiceProvider.php`.
120
+
121
+ ## Integration Capability Matrix
122
+ | Domain | Entry Points | Required Adapters | Complexity | Risks | Confidence |
123
+ |---|---|---|---|---|---|
124
+ | External APIs | `api/v1` core + plugin APIs (`blog`, `contact`, `social-login`) | API gateway/versioning, request signing, client SDK wrappers | Medium | API co the dang tat (`api_enabled=0`), can governance versioning | High |
125
+ | Authentication/SSO | Sanctum (`auth:sanctum`), Social Login web/api routes | IdP config mapping, token lifecycle, callback domain hardening | Medium | Misconfig callback/provider secret, token refresh drift | High |
126
+ | Payment | Khong thay payment module active trong `platform/plugins` | Can plugin payment moi + domain model order/transaction | High | Scope tang nhanh, compliance (PCI/chargeback) | Medium |
127
+ | Messaging/Queue | ShouldQueue listeners/jobs, scheduler commands | Queue backend (Redis/SQS), worker orchestration, retries/DLQ | Medium | `.env` dang `QUEUE_CONNECTION=sync` lam giam async throughput | High |
128
+ | Storage/CDN | Media driver support `s3/r2/wasabi/bunnycdn/do_spaces/backblaze` | Credential/secret manager, CDN URL/signing, lifecycle policies | Medium | Sai config disk/ACL/public URL, chi phi egress | High |
129
+ | Observability | Request-log + Audit-log + logger channel hooks | Central log pipeline, metrics/tracing, alert routing | Medium | Log noise, thieu correlation-id va SLO metrics | Medium |
130
+ | Admin/UI customization | `AdminHelper::registerRoutes`, hooks/filters, panel sections, theme routes | Internal extension conventions, review checklist, plugin quality gates | Low-Medium | Hook overuse dan den kho truy vet side-effects | High |
131
+ | Content/data migration | `data-synchronize` routes/commands + migration system | Mapping schema, transform rules, validation + rollback tooling | Medium | Data quality drift, rollback strategy chua ro | High |
132
+
133
+ ## Strengths, Weaknesses, Risks
134
+ - [Observed | High] Strength: Kien truc module/plugin/theme rat ro rang, extension points phong phu, de mo rong ma khong phai fork core.
135
+ Evidence: `platform/packages/plugin-management/src/Providers/PluginManagementServiceProvider.php`, `platform/core/base/helpers/action-filter.php`.
136
+ - [Observed | High] Strength: Integration surface da da dang (REST API, social auth, media cloud drivers, import/export tooling).
137
+ Evidence: `vendor/botble/api/routes/api.php`, `platform/plugins/social-login/routes/api.php`, `platform/core/media/src/Providers/MediaServiceProvider.php`, `vendor/botble/data-synchronize/src/Providers/DataSynchronizeServiceProvider.php`.
138
+ - [Observed | Medium] Weakness: Root test scope chua phan anh day du plugin/platform domain; CI workflow chua thay trong repo.
139
+ Evidence: `phpunit.xml:17`, `__NO_GITHUB_WORKFLOWS__`.
140
+ - [Observed | High] Weakness: App shell (`app/`) rat mong, kien thuc he thong tap trung trong platform/vendor, onboarding de bi tai.
141
+ Evidence: `routes/web.php`, `app/Providers/*.php`.
142
+ - [Observed | High] Risk: CSRF bypass trong admin production co the mo rong attack surface neu khong co compensating controls.
143
+ Mitigation: tat condition bypass mac dinh, gioi han theo route can thiet, bat buoc CSRF regression tests.
144
+ Evidence: `platform/core/base/src/Providers/EventServiceProvider.php:197-199`.
145
+ - [Observed | High] Risk: `APP_DEBUG=true` trong moi truong danh dau production.
146
+ Mitigation: set `APP_DEBUG=false`, review error rendering + log redaction.
147
+ Evidence: `.env:3-4`.
148
+ - [Inferred | Medium] Risk: Queue dang `sync` gay han che throughput va retries cho email/notifications/jobs.
149
+ Mitigation: chuyen queue backend async, them supervisor + retry policy.
150
+ Evidence: `.env:12`, `platform/plugins/contact/src/Listeners/SendContactEmailListener.php:11`.
151
+
152
+ ## Top 10 Evidence Items
153
+ 1. [Observed | High] Stack versions va merge plugin.
154
+ File/Symbol: `composer.json` (`require`, `extra.merge-plugin`).
155
+ Snippet summary: PHP 8.3/8.4, Laravel 13, Botble API, merge plugin/theme composer files.
156
+ 2. [Observed | High] Frontend monorepo workspace.
157
+ File/Symbol: `package.json` (`workspaces`, `dependencies`, `devDependencies`).
158
+ Snippet summary: workspace split theo `platform/*`, build voi Laravel Mix, Vue 3.
159
+ 3. [Observed | High] App bootstrap va entry routing.
160
+ File/Symbol: `bootstrap/app.php` (`withRouting`), `routes/web.php`.
161
+ Snippet summary: app shell route map don gian; web route root trong app de trong.
162
+ 4. [Observed | High] Plugin dynamic loading by manifest.
163
+ File/Symbol: `PluginManagementServiceProvider::boot`, `PluginManifest::getManifest`.
164
+ Snippet summary: doc manifest, set PSR-4 plugin, register providers active.
165
+ 5. [Observed | High] Hook/filter engine.
166
+ File/Symbol: `action-filter.php` (`add_filter`, `add_action`, `apply_filters`, `do_action`).
167
+ Snippet summary: co che extension runtime dung xuyen module.
168
+ 6. [Observed | High] API auth/middleware orchestration.
169
+ File/Symbol: `ApiServiceProvider::boot`, `vendor/botble/api/routes/api.php`.
170
+ Snippet summary: push API middleware, prefix `api/v1`, auth sanctum cho protected routes.
171
+ 7. [Observed | High] Security headers + CSRF bypass condition.
172
+ File/Symbol: `HttpSecurityHeaders::handle`, `EventServiceProvider::disableCsrfProtection`.
173
+ Snippet summary: set secure headers; condition co the replace CSRF middleware trong admin production.
174
+ 8. [Observed | High] Input sanitization pivot.
175
+ File/Symbol: `BaseHelper::clean`, `core/base/config/general.php`.
176
+ Snippet summary: purifier active by default, co flag `enable_less_secure_web` de bypass.
177
+ 9. [Observed | High] Multi-cloud media integration.
178
+ File/Symbol: `MediaServiceProvider::boot` switch media driver.
179
+ Snippet summary: support `s3`, `r2`, `wasabi`, `bunnycdn`, `do_spaces`, `backblaze`.
180
+ 10. [Observed | High] Data migration/import-export tooling.
181
+ File/Symbol: `DataSynchronizeServiceProvider`, `vendor/botble/data-synchronize/routes/web.php`.
182
+ Snippet summary: co UI route + commands import/export + scheduled chunk cleanup.
183
+
184
+ ## Unknowns and Verification Plan
185
+ - [Assumed | Medium] Chua xac nhan policy production thuc te cho CSRF bypass admin.
186
+ Verification: grep config override theo environment + pen-test luong form admin quan trong.
187
+ - [Assumed | Medium] Chua xac nhan tinh trang queue workers thuc te (supervisor/systemd).
188
+ Verification: check process/runtime metrics, chay test end-to-end cho queued jobs.
189
+ - [Assumed | Medium] Chua xac nhan API dang bat o moi truong production.
190
+ Verification: doc `settings` production (`api_enabled`), smoke test endpoint.
191
+ - [Assumed | Medium] Chua do duoc real test coverage theo plugin/module.
192
+ Verification: thiet lap pipeline test matrix (core + plugin critical suites) va coverage report.
193
+ - [Assumed | Low] Khong thay webhook/GraphQL footprint trong source hien tai, nhung co the ton tai o private plugins chua import.
194
+ Verification: inventory them plugin private/private repo + runtime route dump.
195
+
196
+ ## Recommended Next Actions (30/60/90 day)
197
+ - [30 days | High priority]
198
+ - Dong hardening gap: tat `APP_DEBUG` tren production, review/rang buoc lai CSRF logic admin.
199
+ - Chuan hoa baseline architecture doc: route map, provider map, plugin dependency map.
200
+ - Tao smoke tests cho auth, API, plugin activation/deactivation, contact submission.
201
+ - [60 days | Medium priority]
202
+ - Chuyen queue sang async backend (Redis/SQS), bo sung retry policy + dead-letter strategy.
203
+ - Dung CI pipeline cho lint/static/test (pint + larastan + phpunit selective suites).
204
+ - Chuan hoa integration contracts cho API versioning va plugin hook governance.
205
+ - [90 days | Medium priority]
206
+ - Xay integration playbook (SSO, storage/CDN, data migration) kem template adapters.
207
+ - Bo sung observability stack: correlation-id, dashboard error budget, alert routing.
208
+ - Thiet lap regression/security test set cho cac extension points quan trong (hooks/routes/policies).
@@ -0,0 +1,51 @@
1
+ {
2
+ "id": "php-wordpress-core",
3
+ "name": "WordPress CMS",
4
+ "runtime": "php",
5
+ "runtimeVersion": ">=7.2.24",
6
+ "framework": "wordpress",
7
+ "frameworkVersion": "^6.0",
8
+ "cms": "wordpress",
9
+ "cmsType": "monolith-with-plugin-theme-extensions",
10
+ "description": "Open-source CMS built on PHP with a hook-based plugin/theme architecture, REST API, Block Editor (Gutenberg), and global function procedural style. Powers ~43% of the web.",
11
+ "keyFeatures": [
12
+ "Hook/Filter system (add_action, add_filter, do_action, apply_filters) — core extensibility",
13
+ "Plugin architecture via wp-content/plugins/",
14
+ "Theme architecture via wp-content/themes/ with template hierarchy",
15
+ "Block Editor (Gutenberg) with block.json registration",
16
+ "REST API with /wp-json/wp/v2/ endpoints and custom endpoint registration",
17
+ "WP_Query — the main content query engine",
18
+ "Custom Post Types and Custom Taxonomies",
19
+ "User roles and capabilities system (WP_Roles, WP_User)",
20
+ "Widget system (WP_Widget, WP_Widget_Factory)",
21
+ "Shortcode API",
22
+ "WP-Cron scheduling system",
23
+ "Multisite network support",
24
+ "Customizer API (WP_Customize_Manager)",
25
+ "Options API (get_option, update_option) for persistent key-value storage",
26
+ "Transients API for cached key-value storage with expiration",
27
+ "Rewrite API for pretty permalinks",
28
+ "Script/Style dependency management (wp_enqueue_script, wp_enqueue_style)",
29
+ "Interactivity API for interactive front-end blocks",
30
+ "Full Site Editing (FSE) with theme.json and block templates",
31
+ "XML-RPC and Application Passwords for remote authentication"
32
+ ],
33
+ "directorySignature": [
34
+ "wp-content",
35
+ "wp-admin",
36
+ "wp-includes"
37
+ ],
38
+ "fileSignature": [
39
+ "wp-config.php",
40
+ "wp-settings.php",
41
+ "wp-load.php",
42
+ "wp-blog-header.php"
43
+ ],
44
+ "typicalPlugins": [
45
+ "woocommerce", "contact-form-7", "yoast-seo", "elementor",
46
+ "advanced-custom-fields", "wordfence", "jetpack",
47
+ "wp-super-cache", "akismet", "classic-editor"
48
+ ],
49
+ "analysisFile": "structure.md",
50
+ "lastUpdated": "2026-05-03"
51
+ }