easecloud-mageperf 0.1.0__tar.gz

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 (243) hide show
  1. easecloud_mageperf-0.1.0/.github/workflows/ci.yml +28 -0
  2. easecloud_mageperf-0.1.0/.github/workflows/publish.yml +62 -0
  3. easecloud_mageperf-0.1.0/.gitignore +36 -0
  4. easecloud_mageperf-0.1.0/CONTRIBUTING.md +86 -0
  5. easecloud_mageperf-0.1.0/Dockerfile +24 -0
  6. easecloud_mageperf-0.1.0/LICENSE +21 -0
  7. easecloud_mageperf-0.1.0/PKG-INFO +229 -0
  8. easecloud_mageperf-0.1.0/README.md +197 -0
  9. easecloud_mageperf-0.1.0/bin/mageperf.js +33 -0
  10. easecloud_mageperf-0.1.0/install.sh +51 -0
  11. easecloud_mageperf-0.1.0/mageperf/__init__.py +1 -0
  12. easecloud_mageperf-0.1.0/mageperf/cli.py +375 -0
  13. easecloud_mageperf-0.1.0/mageperf/config.py +65 -0
  14. easecloud_mageperf-0.1.0/mageperf/core/__init__.py +0 -0
  15. easecloud_mageperf-0.1.0/mageperf/core/analysis_orchestrator.py +170 -0
  16. easecloud_mageperf-0.1.0/mageperf/core/analyzers.py +42 -0
  17. easecloud_mageperf-0.1.0/mageperf/core/magento_checker.py +986 -0
  18. easecloud_mageperf-0.1.0/mageperf/core/models.py +52 -0
  19. easecloud_mageperf-0.1.0/mageperf/core/performance_checker.py +882 -0
  20. easecloud_mageperf-0.1.0/mageperf/core/scoring_service.py +385 -0
  21. easecloud_mageperf-0.1.0/mageperf/server/__init__.py +0 -0
  22. easecloud_mageperf-0.1.0/mageperf/server/server.py +152 -0
  23. easecloud_mageperf-0.1.0/mageperf/server/static/404/index.html +1 -0
  24. easecloud_mageperf-0.1.0/mageperf/server/static/404.html +1 -0
  25. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/XrYr7sSal45oZokrlFrej/_buildManifest.js +1 -0
  26. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/XrYr7sSal45oZokrlFrej/_ssgManifest.js +1 -0
  27. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/125-014fe32049f39f76.js +1 -0
  28. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/145-a6dda3b64883afbf.js +1 -0
  29. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/160-84ddd8a26c2525f2.js +1 -0
  30. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/173-60125878c10d48ba.js +1 -0
  31. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/196-2b187cbc4d3238ba.js +1 -0
  32. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/356-44a22847ee0b86e8.js +1 -0
  33. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/4-a44b517de328e4e5.js +1 -0
  34. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/421-5c2e326761a34bc4.js +1 -0
  35. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/470-92a45c1517b6dac3.js +1 -0
  36. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/4bd1b696-9911af18dede28aa.js +1 -0
  37. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/592-8d9214a931227599.js +1 -0
  38. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/690-7c6984ad51c61c5a.js +1 -0
  39. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/698-f8747db3dcffb70e.js +1 -0
  40. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/764-3b5bc7d4108db382.js +1 -0
  41. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/775-e29fff578ae06723.js +1 -0
  42. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/891-c276c906e578a456.js +1 -0
  43. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/920-79b2404ad9f4572d.js +1 -0
  44. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/964-03261b559353fef7.js +1 -0
  45. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/_not-found/page-1ce309e89987b660.js +1 -0
  46. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/all-analysis/page-55c88d5c71ee6abf.js +1 -0
  47. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/layout-10056b9e84dd162c.js +1 -0
  48. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/onboarding/page-f211aa61b3474b62.js +1 -0
  49. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/page-fa14acc4f2e74f1b.js +1 -0
  50. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/profile/page-81b663ffda30bc9d.js +1 -0
  51. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/progress/page-b1fdfe300ca46260.js +1 -0
  52. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/core-web-vitals/page-ed20d1baee76d360.js +1 -0
  53. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/layout-ac44376c1e343fad.js +1 -0
  54. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/page-a43da525cb02d1a6.js +1 -0
  55. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/performance-trends/page-ee3c07e421a06649.js +1 -0
  56. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/recommendations/optimization/page-e0d27470c0df9a92.js +1 -0
  57. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/recommendations/page-d1001f43c8b746c8.js +1 -0
  58. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/recommendations/performance-opportunities/page-640679af7ca30acd.js +1 -0
  59. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/roadmap/page-841594bb9fecaadd.js +1 -0
  60. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/technical-analysis/page-592a0692710f876c.js +1 -0
  61. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/settings/page-2a9d4f3ecc6daad5.js +1 -0
  62. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/framework-65ef2e26b6c3f974.js +1 -0
  63. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/main-93a22076b5e3a16b.js +1 -0
  64. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/main-app-c5b456ce9be1db29.js +1 -0
  65. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/pages/_app-035473a38fdb4b73.js +1 -0
  66. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/pages/_error-dff1d5ef0ecd42ce.js +1 -0
  67. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  68. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/webpack-14eec64ca602819f.js +1 -0
  69. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/css/3d79f7d5e2d2dd32.css +1 -0
  70. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/css/de70bee13400563f.css +1 -0
  71. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
  72. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/747892c23ea88013-s.woff2 +0 -0
  73. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/8d697b304b401681-s.woff2 +0 -0
  74. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
  75. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/9610d9e46709d722-s.woff2 +0 -0
  76. easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
  77. easecloud_mageperf-0.1.0/mageperf/server/static/all-analysis/index.html +1 -0
  78. easecloud_mageperf-0.1.0/mageperf/server/static/all-analysis/index.txt +24 -0
  79. easecloud_mageperf-0.1.0/mageperf/server/static/favicon.ico +0 -0
  80. easecloud_mageperf-0.1.0/mageperf/server/static/file.svg +1 -0
  81. easecloud_mageperf-0.1.0/mageperf/server/static/globe.svg +1 -0
  82. easecloud_mageperf-0.1.0/mageperf/server/static/index.html +1 -0
  83. easecloud_mageperf-0.1.0/mageperf/server/static/index.txt +24 -0
  84. easecloud_mageperf-0.1.0/mageperf/server/static/logo.png +0 -0
  85. easecloud_mageperf-0.1.0/mageperf/server/static/manifest.json +97 -0
  86. easecloud_mageperf-0.1.0/mageperf/server/static/next.svg +1 -0
  87. easecloud_mageperf-0.1.0/mageperf/server/static/onboarding/index.html +1 -0
  88. easecloud_mageperf-0.1.0/mageperf/server/static/onboarding/index.txt +24 -0
  89. easecloud_mageperf-0.1.0/mageperf/server/static/profile/index.html +1 -0
  90. easecloud_mageperf-0.1.0/mageperf/server/static/profile/index.txt +24 -0
  91. easecloud_mageperf-0.1.0/mageperf/server/static/progress/index.html +1 -0
  92. easecloud_mageperf-0.1.0/mageperf/server/static/progress/index.txt +24 -0
  93. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/core-web-vitals/index.html +1 -0
  94. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/core-web-vitals/index.txt +24 -0
  95. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/index.html +1 -0
  96. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/index.txt +24 -0
  97. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/performance-trends/index.html +1 -0
  98. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/performance-trends/index.txt +24 -0
  99. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/index.html +1 -0
  100. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/index.txt +24 -0
  101. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/optimization/index.html +1 -0
  102. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/optimization/index.txt +24 -0
  103. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/performance-opportunities/index.html +1 -0
  104. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/performance-opportunities/index.txt +24 -0
  105. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/roadmap/index.html +1 -0
  106. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/roadmap/index.txt +24 -0
  107. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/technical-analysis/index.html +1 -0
  108. easecloud_mageperf-0.1.0/mageperf/server/static/report/_/technical-analysis/index.txt +24 -0
  109. easecloud_mageperf-0.1.0/mageperf/server/static/settings/index.html +1 -0
  110. easecloud_mageperf-0.1.0/mageperf/server/static/settings/index.txt +24 -0
  111. easecloud_mageperf-0.1.0/mageperf/server/static/vercel.svg +1 -0
  112. easecloud_mageperf-0.1.0/mageperf/server/static/window.svg +1 -0
  113. easecloud_mageperf-0.1.0/mageperf/storage/__init__.py +0 -0
  114. easecloud_mageperf-0.1.0/mageperf/storage/store.py +79 -0
  115. easecloud_mageperf-0.1.0/mageperf/utils/__init__.py +0 -0
  116. easecloud_mageperf-0.1.0/mageperf/utils/http_client.py +85 -0
  117. easecloud_mageperf-0.1.0/mageperf/utils/logger.py +14 -0
  118. easecloud_mageperf-0.1.0/mageperf/utils/security.py +44 -0
  119. easecloud_mageperf-0.1.0/package.json +16 -0
  120. easecloud_mageperf-0.1.0/pyproject.toml +54 -0
  121. easecloud_mageperf-0.1.0/requirements-dev.txt +3 -0
  122. easecloud_mageperf-0.1.0/tests/__init__.py +0 -0
  123. easecloud_mageperf-0.1.0/tests/test_analyze_command.py +66 -0
  124. easecloud_mageperf-0.1.0/tests/test_config.py +32 -0
  125. easecloud_mageperf-0.1.0/tests/test_report_commands.py +53 -0
  126. easecloud_mageperf-0.1.0/tests/test_server.py +76 -0
  127. easecloud_mageperf-0.1.0/tests/test_store.py +55 -0
  128. easecloud_mageperf-0.1.0/tests/test_utils.py +17 -0
  129. easecloud_mageperf-0.1.0/ui/.gitignore +44 -0
  130. easecloud_mageperf-0.1.0/ui/README.md +36 -0
  131. easecloud_mageperf-0.1.0/ui/components.json +21 -0
  132. easecloud_mageperf-0.1.0/ui/eslint.config.mjs +16 -0
  133. easecloud_mageperf-0.1.0/ui/next.config.ts +9 -0
  134. easecloud_mageperf-0.1.0/ui/package-lock.json +9277 -0
  135. easecloud_mageperf-0.1.0/ui/package.json +52 -0
  136. easecloud_mageperf-0.1.0/ui/postcss.config.mjs +5 -0
  137. easecloud_mageperf-0.1.0/ui/public/file.svg +1 -0
  138. easecloud_mageperf-0.1.0/ui/public/globe.svg +1 -0
  139. easecloud_mageperf-0.1.0/ui/public/logo.png +0 -0
  140. easecloud_mageperf-0.1.0/ui/public/manifest.json +97 -0
  141. easecloud_mageperf-0.1.0/ui/public/next.svg +1 -0
  142. easecloud_mageperf-0.1.0/ui/public/vercel.svg +1 -0
  143. easecloud_mageperf-0.1.0/ui/public/window.svg +1 -0
  144. easecloud_mageperf-0.1.0/ui/src/app/all-analysis/page.tsx +896 -0
  145. easecloud_mageperf-0.1.0/ui/src/app/favicon.ico +0 -0
  146. easecloud_mageperf-0.1.0/ui/src/app/globals.css +494 -0
  147. easecloud_mageperf-0.1.0/ui/src/app/layout.tsx +64 -0
  148. easecloud_mageperf-0.1.0/ui/src/app/onboarding/page.tsx +866 -0
  149. easecloud_mageperf-0.1.0/ui/src/app/page.tsx +130 -0
  150. easecloud_mageperf-0.1.0/ui/src/app/profile/page.tsx +406 -0
  151. easecloud_mageperf-0.1.0/ui/src/app/progress/page.tsx +251 -0
  152. easecloud_mageperf-0.1.0/ui/src/app/providers.tsx +14 -0
  153. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/PageContent.tsx +1097 -0
  154. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/core-web-vitals/PageContent.tsx +42 -0
  155. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/core-web-vitals/page.tsx +3 -0
  156. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/layout.tsx +16 -0
  157. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/page.tsx +11 -0
  158. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/performance-trends/PageContent.tsx +943 -0
  159. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/performance-trends/page.tsx +3 -0
  160. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/PageContent.tsx +176 -0
  161. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/optimization/PageContent.tsx +71 -0
  162. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/optimization/page.tsx +3 -0
  163. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/page.tsx +3 -0
  164. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/performance-opportunities/PageContent.tsx +94 -0
  165. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/performance-opportunities/page.tsx +3 -0
  166. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/roadmap/PageContent.tsx +42 -0
  167. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/roadmap/page.tsx +3 -0
  168. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/technical-analysis/PageContent.tsx +42 -0
  169. easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/technical-analysis/page.tsx +3 -0
  170. easecloud_mageperf-0.1.0/ui/src/app/settings/page.tsx +980 -0
  171. easecloud_mageperf-0.1.0/ui/src/components/BrandedEmptyState.tsx +132 -0
  172. easecloud_mageperf-0.1.0/ui/src/components/BrandedLoading.tsx +125 -0
  173. easecloud_mageperf-0.1.0/ui/src/components/EaseCloudCTA.tsx +113 -0
  174. easecloud_mageperf-0.1.0/ui/src/components/MainSidebar.tsx +657 -0
  175. easecloud_mageperf-0.1.0/ui/src/components/MarkdownRenderer.tsx +35 -0
  176. easecloud_mageperf-0.1.0/ui/src/components/PoweredByEaseCloud.tsx +69 -0
  177. easecloud_mageperf-0.1.0/ui/src/components/analysis/AnalysisCard.tsx +45 -0
  178. easecloud_mageperf-0.1.0/ui/src/components/app-sidebar.tsx +150 -0
  179. easecloud_mageperf-0.1.0/ui/src/components/layout/AppLayout.tsx +169 -0
  180. easecloud_mageperf-0.1.0/ui/src/components/layout/DualSidebarLayout.tsx +149 -0
  181. easecloud_mageperf-0.1.0/ui/src/components/layout/GridSystem.tsx +284 -0
  182. easecloud_mageperf-0.1.0/ui/src/components/layout/PageTransition.tsx +404 -0
  183. easecloud_mageperf-0.1.0/ui/src/components/layout/ReportSidebar.tsx +241 -0
  184. easecloud_mageperf-0.1.0/ui/src/components/lazy/LazyReportComponents.tsx +95 -0
  185. easecloud_mageperf-0.1.0/ui/src/components/logo.tsx +42 -0
  186. easecloud_mageperf-0.1.0/ui/src/components/mobile/MobileNavigation.tsx +316 -0
  187. easecloud_mageperf-0.1.0/ui/src/components/nav-analyses.tsx +129 -0
  188. easecloud_mageperf-0.1.0/ui/src/components/nav-main.tsx +89 -0
  189. easecloud_mageperf-0.1.0/ui/src/components/nav-projects.tsx +92 -0
  190. easecloud_mageperf-0.1.0/ui/src/components/nav-secondary.tsx +40 -0
  191. easecloud_mageperf-0.1.0/ui/src/components/nav-user.tsx +124 -0
  192. easecloud_mageperf-0.1.0/ui/src/components/performance/BenchmarkComparison.tsx +565 -0
  193. easecloud_mageperf-0.1.0/ui/src/components/performance/PerformanceComparisonCharts.tsx +558 -0
  194. easecloud_mageperf-0.1.0/ui/src/components/performance/PerformanceGoalTracker.tsx +644 -0
  195. easecloud_mageperf-0.1.0/ui/src/components/report/CoreWebVitals.tsx +923 -0
  196. easecloud_mageperf-0.1.0/ui/src/components/report/OptimizationRoadmap.tsx +704 -0
  197. easecloud_mageperf-0.1.0/ui/src/components/report/PerformanceMetrics.tsx +260 -0
  198. easecloud_mageperf-0.1.0/ui/src/components/report/Recommendations.tsx +984 -0
  199. easecloud_mageperf-0.1.0/ui/src/components/report/ScoreCard.tsx +80 -0
  200. easecloud_mageperf-0.1.0/ui/src/components/report/TechnicalAnalysis.tsx +1513 -0
  201. easecloud_mageperf-0.1.0/ui/src/components/team-switcher.tsx +91 -0
  202. easecloud_mageperf-0.1.0/ui/src/components/ui/DetailModal.tsx +676 -0
  203. easecloud_mageperf-0.1.0/ui/src/components/ui/DynamicBreadcrumb.tsx +144 -0
  204. easecloud_mageperf-0.1.0/ui/src/components/ui/InteractiveTooltip.tsx +435 -0
  205. easecloud_mageperf-0.1.0/ui/src/components/ui/ProgressiveDisclosure.tsx +199 -0
  206. easecloud_mageperf-0.1.0/ui/src/components/ui/SearchFilter.tsx +390 -0
  207. easecloud_mageperf-0.1.0/ui/src/components/ui/Tooltip.tsx +107 -0
  208. easecloud_mageperf-0.1.0/ui/src/components/ui/TouchOptimized.tsx +457 -0
  209. easecloud_mageperf-0.1.0/ui/src/components/ui/alert.tsx +66 -0
  210. easecloud_mageperf-0.1.0/ui/src/components/ui/avatar.tsx +53 -0
  211. easecloud_mageperf-0.1.0/ui/src/components/ui/badge.tsx +46 -0
  212. easecloud_mageperf-0.1.0/ui/src/components/ui/breadcrumb.tsx +109 -0
  213. easecloud_mageperf-0.1.0/ui/src/components/ui/button.tsx +72 -0
  214. easecloud_mageperf-0.1.0/ui/src/components/ui/card.tsx +110 -0
  215. easecloud_mageperf-0.1.0/ui/src/components/ui/collapsible.tsx +33 -0
  216. easecloud_mageperf-0.1.0/ui/src/components/ui/dropdown-menu.tsx +257 -0
  217. easecloud_mageperf-0.1.0/ui/src/components/ui/feedback.tsx +491 -0
  218. easecloud_mageperf-0.1.0/ui/src/components/ui/input.tsx +21 -0
  219. easecloud_mageperf-0.1.0/ui/src/components/ui/label.tsx +24 -0
  220. easecloud_mageperf-0.1.0/ui/src/components/ui/optimized-image.tsx +425 -0
  221. easecloud_mageperf-0.1.0/ui/src/components/ui/progress.tsx +31 -0
  222. easecloud_mageperf-0.1.0/ui/src/components/ui/scroll-area.tsx +58 -0
  223. easecloud_mageperf-0.1.0/ui/src/components/ui/separator.tsx +28 -0
  224. easecloud_mageperf-0.1.0/ui/src/components/ui/sheet.tsx +139 -0
  225. easecloud_mageperf-0.1.0/ui/src/components/ui/sidebar.tsx +727 -0
  226. easecloud_mageperf-0.1.0/ui/src/components/ui/skeleton.tsx +24 -0
  227. easecloud_mageperf-0.1.0/ui/src/components/ui/skeletons.tsx +403 -0
  228. easecloud_mageperf-0.1.0/ui/src/components/ui/switch.tsx +31 -0
  229. easecloud_mageperf-0.1.0/ui/src/components/ui/tabs.tsx +66 -0
  230. easecloud_mageperf-0.1.0/ui/src/components/ui/textarea.tsx +27 -0
  231. easecloud_mageperf-0.1.0/ui/src/contexts/AppStateContext.tsx +195 -0
  232. easecloud_mageperf-0.1.0/ui/src/contexts/MockAuthContext.tsx +61 -0
  233. easecloud_mageperf-0.1.0/ui/src/contexts/ReportContext.tsx +63 -0
  234. easecloud_mageperf-0.1.0/ui/src/data/sampleReport1.json +3424 -0
  235. easecloud_mageperf-0.1.0/ui/src/data/sampleReports.ts +185 -0
  236. easecloud_mageperf-0.1.0/ui/src/hooks/use-mobile.ts +59 -0
  237. easecloud_mageperf-0.1.0/ui/src/hooks/useDeviceOptimization.ts +317 -0
  238. easecloud_mageperf-0.1.0/ui/src/lib/animations.ts +522 -0
  239. easecloud_mageperf-0.1.0/ui/src/lib/lazyLoading.tsx +406 -0
  240. easecloud_mageperf-0.1.0/ui/src/lib/localApi.ts +254 -0
  241. easecloud_mageperf-0.1.0/ui/src/lib/performance.ts +571 -0
  242. easecloud_mageperf-0.1.0/ui/src/lib/utils.ts +6 -0
  243. easecloud_mageperf-0.1.0/ui/tsconfig.json +27 -0
@@ -0,0 +1,28 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ name: Test (Python ${{ matrix.python-version }})
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ python-version: ["3.11", "3.12"]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: pip install -e ".[dev]"
26
+
27
+ - name: Run tests
28
+ run: pytest tests/ -v
@@ -0,0 +1,62 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ test:
9
+ name: Test
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.12"
17
+
18
+ - name: Install dependencies
19
+ run: pip install -e ".[dev]"
20
+
21
+ - name: Run tests
22
+ run: pytest tests/ -v
23
+
24
+ build:
25
+ name: Build
26
+ needs: test
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+
31
+ - uses: actions/setup-python@v5
32
+ with:
33
+ python-version: "3.12"
34
+
35
+ - name: Install build
36
+ run: pip install build
37
+
38
+ - name: Build wheel and sdist
39
+ run: python -m build
40
+
41
+ - name: Upload dist artifacts
42
+ uses: actions/upload-artifact@v4
43
+ with:
44
+ name: dist
45
+ path: dist/
46
+
47
+ publish:
48
+ name: Publish to PyPI
49
+ needs: build
50
+ runs-on: ubuntu-latest
51
+ environment: pypi
52
+ permissions:
53
+ id-token: write # required for trusted publishing
54
+ steps:
55
+ - name: Download dist artifacts
56
+ uses: actions/download-artifact@v4
57
+ with:
58
+ name: dist
59
+ path: dist/
60
+
61
+ - name: Publish to PyPI
62
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,36 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.pyo
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .eggs/
9
+ .venv/
10
+ venv/
11
+ *.egg
12
+
13
+ # Pytest
14
+ .pytest_cache/
15
+ .coverage
16
+ htmlcov/
17
+
18
+ # Node / Next.js
19
+ ui/node_modules/
20
+ ui/.next/
21
+ ui/out/
22
+ ui/tsconfig.tsbuildinfo
23
+ ui/next-env.d.ts
24
+
25
+ # OS
26
+ .DS_Store
27
+ Thumbs.db
28
+
29
+ # Editor
30
+ .vscode/
31
+ .idea/
32
+ *.swp
33
+
34
+ # Env
35
+ .env
36
+ .env.local
@@ -0,0 +1,86 @@
1
+ # Contributing to mageperf
2
+
3
+ Thank you for your interest in contributing! This guide covers everything you need to get started.
4
+
5
+ ---
6
+
7
+ ## Ways to contribute
8
+
9
+ - **Bug reports** — open an issue with steps to reproduce
10
+ - **Feature requests** — open an issue describing the use case
11
+ - **Pull requests** — fixes, new checks, UI improvements, docs
12
+
13
+ ---
14
+
15
+ ## Getting started
16
+
17
+ ### Prerequisites
18
+
19
+ - Python 3.11+
20
+ - Node.js 18+ (only if editing the UI)
21
+
22
+ ### Setup
23
+
24
+ ```bash
25
+ git clone https://github.com/easecloudio/mageperf.git
26
+ cd mageperf
27
+ pip install -e ".[dev]"
28
+ ```
29
+
30
+ If `[dev]` extras aren't available yet, install dev deps directly:
31
+
32
+ ```bash
33
+ pip install pytest pytest-asyncio pytest-mock
34
+ ```
35
+
36
+ ### Run tests
37
+
38
+ ```bash
39
+ pytest tests/ -v
40
+ ```
41
+
42
+ All 20 tests must pass before submitting a PR.
43
+
44
+ ---
45
+
46
+ ## Project structure
47
+
48
+ ```
49
+ mageperf/core/ Analysis engine — add new checks here
50
+ mageperf/cli.py CLI commands — add new commands here
51
+ mageperf/storage/ Report persistence
52
+ mageperf/server/ Local HTTP server
53
+ tests/ pytest suite — add tests for every change
54
+ ui/src/ Next.js frontend source
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Adding a new check
60
+
61
+ 1. Add your logic to `mageperf/core/magento_checker.py` or `performance_checker.py`
62
+ 2. Return a `CheckResult` dataclass with `category`, `score`, `details`, `recommendations`
63
+ 3. Wire it into `analysis_orchestrator.py`
64
+ 4. Add at least one test in `tests/`
65
+
66
+ ---
67
+
68
+ ## Pull request guidelines
69
+
70
+ - Keep PRs focused — one feature or fix per PR
71
+ - All tests must pass (`pytest tests/ -v`)
72
+ - Follow existing code style (no formatter enforced, just be consistent)
73
+ - Update `README.md` if you add a new command or config key
74
+
75
+ ---
76
+
77
+ ## Reporting a vulnerability
78
+
79
+ Please do **not** open a public issue for security vulnerabilities.
80
+ Email [security@easecloud.io](mailto:security@easecloud.io) instead.
81
+
82
+ ---
83
+
84
+ ## License
85
+
86
+ By contributing you agree your code will be released under the [MIT License](LICENSE).
@@ -0,0 +1,24 @@
1
+ FROM python:3.11-slim
2
+
3
+ LABEL org.opencontainers.image.title="mageperf"
4
+ LABEL org.opencontainers.image.description="EaseCloud Magento Performance Analyzer"
5
+ LABEL org.opencontainers.image.source="https://github.com/easecloud/mageperf"
6
+ LABEL org.opencontainers.image.vendor="EaseCloud"
7
+ LABEL org.opencontainers.image.licenses="MIT"
8
+
9
+ WORKDIR /app
10
+
11
+ # Copy package files
12
+ COPY pyproject.toml README.md ./
13
+ COPY mageperf/ ./mageperf/
14
+
15
+ # Install dependencies
16
+ RUN pip install --no-cache-dir .
17
+
18
+ # Create config directory
19
+ RUN mkdir -p /root/.easecloud/mageperf/reports
20
+
21
+ EXPOSE 4780
22
+
23
+ ENTRYPOINT ["mageperf"]
24
+ CMD ["--help"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 EaseCloud (https://easecloud.io)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,229 @@
1
+ Metadata-Version: 2.4
2
+ Name: easecloud-mageperf
3
+ Version: 0.1.0
4
+ Summary: Free, open-source Magento performance analysis CLI by EaseCloud
5
+ Project-URL: Homepage, https://easecloud.io
6
+ Project-URL: Repository, https://github.com/easecloudio/mageperf
7
+ Project-URL: Bug Tracker, https://github.com/easecloudio/mageperf/issues
8
+ Author-email: EaseCloud <support@easecloud.io>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: cli,easecloud,magento,performance
12
+ Classifier: Environment :: Console
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
19
+ Classifier: Topic :: System :: Monitoring
20
+ Requires-Python: >=3.11
21
+ Requires-Dist: beautifulsoup4>=4.12.0
22
+ Requires-Dist: dnspython>=2.4.0
23
+ Requires-Dist: httpx>=0.28.0
24
+ Requires-Dist: rich>=13.0.0
25
+ Requires-Dist: typer>=0.12.0
26
+ Provides-Extra: dev
27
+ Requires-Dist: httpx>=0.28.0; extra == 'dev'
28
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
29
+ Requires-Dist: pytest-mock>=3.0.0; extra == 'dev'
30
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
31
+ Description-Content-Type: text/markdown
32
+
33
+ # mageperf
34
+
35
+ **Free, open-source Magento performance analysis CLI by [EaseCloud](https://www.easecloud.io)**
36
+
37
+ `mageperf` scans any Magento 2 store from your terminal — no account, no cloud, no data leaving your machine. It checks performance, security posture, and configuration best practices, then saves reports locally and optionally opens a browser UI.
38
+
39
+ ---
40
+
41
+ ## Features
42
+
43
+ - **Magento detection** — fingerprints Magento version, edition, and deployment mode
44
+ - **Performance analysis** — Core Web Vitals via Google PageSpeed Insights API (optional)
45
+ - **Security checks** — exposed admin paths, debug mode, insecure headers
46
+ - **Configuration checks** — caching, JS/CSS merging, CDN, production mode
47
+ - **Local reports** — stored in `~/.easecloud/mageperf/reports/` as JSON
48
+ - **Browser UI** — rich report viewer served locally on port 4780
49
+ - **JSON output** — pipe results into scripts or AI agents
50
+
51
+ ---
52
+
53
+ ## Installation
54
+
55
+ ### pip (recommended)
56
+
57
+ ```bash
58
+ pip install easecloud-mageperf
59
+ ```
60
+
61
+ ### npm / npx
62
+
63
+ ```bash
64
+ npx @easecloud/mageperf analyze https://your-store.com
65
+ # or install globally
66
+ npm install -g @easecloud/mageperf
67
+ ```
68
+
69
+ ### Docker
70
+
71
+ ```bash
72
+ docker run --rm easecloud/mageperf analyze https://your-store.com
73
+ ```
74
+
75
+ ### One-line install script
76
+
77
+ ```bash
78
+ curl -fsSL https://raw.githubusercontent.com/easecloudio/mageperf/main/install.sh | bash
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Quick start
84
+
85
+ ```bash
86
+ # Analyze a store
87
+ mageperf analyze https://your-store.com
88
+
89
+ # Analyze and open the browser UI when done
90
+ mageperf analyze https://your-store.com --open
91
+
92
+ # JSON output (pipe into jq, scripts, AI agents)
93
+ mageperf analyze https://your-store.com --format json | jq .overall_score
94
+
95
+ # List saved reports
96
+ mageperf list
97
+
98
+ # Open the local report UI
99
+ mageperf serve
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Commands
105
+
106
+ | Command | Description |
107
+ | ----------------------------------- | -------------------------------- |
108
+ | `mageperf analyze <url>` | Run a full analysis |
109
+ | `mageperf list` | List saved reports |
110
+ | `mageperf open <id>` | Open a report in the browser UI |
111
+ | `mageperf serve` | Start the local report UI server |
112
+ | `mageperf clean` | Delete all saved reports |
113
+ | `mageperf config set <key> <value>` | Set a config value |
114
+ | `mageperf config get <key>` | Get a config value |
115
+
116
+ ### `analyze` options
117
+
118
+ | Flag | Default | Description |
119
+ | ----------------- | --------- | ----------------------------------------- |
120
+ | `--format` | `summary` | Output format: `summary`, `json`, `table` |
121
+ | `--output <file>` | — | Write JSON report to a file |
122
+ | `--open` | off | Open browser UI after analysis |
123
+ | `--no-pagespeed` | off | Skip Google PageSpeed API calls |
124
+
125
+ ---
126
+
127
+ ## Configuration
128
+
129
+ Config is stored in `~/.easecloud/mageperf/config.json`.
130
+
131
+ ```bash
132
+ # Set your Google PageSpeed API key (optional, improves accuracy)
133
+ mageperf config set pagespeed-api-key YOUR_KEY
134
+
135
+ # Change the local UI port (default: 4780)
136
+ mageperf config set server-port 4780
137
+ ```
138
+
139
+ Get a free PageSpeed API key at [Google Cloud Console](https://console.cloud.google.com/).
140
+ Without a key, `mageperf` falls back to direct HTTP analysis.
141
+
142
+ ---
143
+
144
+ ## How it works
145
+
146
+ Analysis runs in four layers:
147
+
148
+ 1. **Magento detection** — headers, HTML patterns, JS indicators, known paths
149
+ 2. **Performance** — PageSpeed Insights API (optional) or direct HTTP timing
150
+ 3. **Security** — admin URL exposure, debug headers, error reporting
151
+ 4. **Configuration** — caching strategy, JS/CSS bundling, deployment mode
152
+
153
+ All checks use only publicly available data. No credentials, no admin access required.
154
+
155
+ ---
156
+
157
+ ## Output example
158
+
159
+ ```
160
+ Overall Score: 74/100
161
+
162
+ Performance 82 ████████░░
163
+ Security 61 ██████░░░░
164
+ Config 79 ███████░░░
165
+
166
+ 2 critical issues found. Run with --open to view full report.
167
+ Report saved: ~/.easecloud/mageperf/reports/abc123.json
168
+ ```
169
+
170
+ > **Found critical issues?** EaseCloud provides [Magento performance optimization consulting](https://www.easecloud.io/magento-performance-optimization) — Core Web Vitals, caching strategy, infrastructure tuning, and more.
171
+
172
+ ---
173
+
174
+ ## Development
175
+
176
+ ```bash
177
+ git clone https://github.com/easecloudio/mageperf.git
178
+ cd mageperf
179
+ pip install -e ".[dev]"
180
+
181
+ # Run tests
182
+ pytest tests/ -v
183
+
184
+ # Build the UI (requires Node 18+)
185
+ cd ui && npm install && npm run build
186
+ ```
187
+
188
+ ### Project structure
189
+
190
+ ```
191
+ mageperf/ Python package
192
+ cli.py Typer CLI entry point
193
+ config.py Config management (~/.easecloud/mageperf/)
194
+ core/ Analysis engine
195
+ magento_checker.py
196
+ performance_checker.py
197
+ analysis_orchestrator.py
198
+ scoring_service.py
199
+ storage/ Local JSON report store
200
+ server/ stdlib HTTP server + pre-built UI
201
+ static/ Pre-built Next.js UI
202
+ tests/ pytest test suite (20 tests)
203
+ ui/ Next.js 15 UI source (TypeScript)
204
+ Dockerfile Docker image build
205
+ install.sh Universal install script
206
+ package.json npm wrapper (@easecloud/mageperf)
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Contributing
212
+
213
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
214
+
215
+ ---
216
+
217
+ ## Work with EaseCloud
218
+
219
+ `mageperf` finds the problems. Need help fixing them?
220
+
221
+ We offer end-to-end [Magento performance optimization](https://www.easecloud.io/magento-performance-optimization) — from diagnosis to implementation across caching, Core Web Vitals, infrastructure, and deployment.
222
+
223
+ Contact: [support@easecloud.io](mailto:support@easecloud.io) · [easecloud.io](https://easecloud.io)
224
+
225
+ ---
226
+
227
+ ## License
228
+
229
+ MIT © [EaseCloud](https://easecloud.io)
@@ -0,0 +1,197 @@
1
+ # mageperf
2
+
3
+ **Free, open-source Magento performance analysis CLI by [EaseCloud](https://www.easecloud.io)**
4
+
5
+ `mageperf` scans any Magento 2 store from your terminal — no account, no cloud, no data leaving your machine. It checks performance, security posture, and configuration best practices, then saves reports locally and optionally opens a browser UI.
6
+
7
+ ---
8
+
9
+ ## Features
10
+
11
+ - **Magento detection** — fingerprints Magento version, edition, and deployment mode
12
+ - **Performance analysis** — Core Web Vitals via Google PageSpeed Insights API (optional)
13
+ - **Security checks** — exposed admin paths, debug mode, insecure headers
14
+ - **Configuration checks** — caching, JS/CSS merging, CDN, production mode
15
+ - **Local reports** — stored in `~/.easecloud/mageperf/reports/` as JSON
16
+ - **Browser UI** — rich report viewer served locally on port 4780
17
+ - **JSON output** — pipe results into scripts or AI agents
18
+
19
+ ---
20
+
21
+ ## Installation
22
+
23
+ ### pip (recommended)
24
+
25
+ ```bash
26
+ pip install easecloud-mageperf
27
+ ```
28
+
29
+ ### npm / npx
30
+
31
+ ```bash
32
+ npx @easecloud/mageperf analyze https://your-store.com
33
+ # or install globally
34
+ npm install -g @easecloud/mageperf
35
+ ```
36
+
37
+ ### Docker
38
+
39
+ ```bash
40
+ docker run --rm easecloud/mageperf analyze https://your-store.com
41
+ ```
42
+
43
+ ### One-line install script
44
+
45
+ ```bash
46
+ curl -fsSL https://raw.githubusercontent.com/easecloudio/mageperf/main/install.sh | bash
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Quick start
52
+
53
+ ```bash
54
+ # Analyze a store
55
+ mageperf analyze https://your-store.com
56
+
57
+ # Analyze and open the browser UI when done
58
+ mageperf analyze https://your-store.com --open
59
+
60
+ # JSON output (pipe into jq, scripts, AI agents)
61
+ mageperf analyze https://your-store.com --format json | jq .overall_score
62
+
63
+ # List saved reports
64
+ mageperf list
65
+
66
+ # Open the local report UI
67
+ mageperf serve
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Commands
73
+
74
+ | Command | Description |
75
+ | ----------------------------------- | -------------------------------- |
76
+ | `mageperf analyze <url>` | Run a full analysis |
77
+ | `mageperf list` | List saved reports |
78
+ | `mageperf open <id>` | Open a report in the browser UI |
79
+ | `mageperf serve` | Start the local report UI server |
80
+ | `mageperf clean` | Delete all saved reports |
81
+ | `mageperf config set <key> <value>` | Set a config value |
82
+ | `mageperf config get <key>` | Get a config value |
83
+
84
+ ### `analyze` options
85
+
86
+ | Flag | Default | Description |
87
+ | ----------------- | --------- | ----------------------------------------- |
88
+ | `--format` | `summary` | Output format: `summary`, `json`, `table` |
89
+ | `--output <file>` | — | Write JSON report to a file |
90
+ | `--open` | off | Open browser UI after analysis |
91
+ | `--no-pagespeed` | off | Skip Google PageSpeed API calls |
92
+
93
+ ---
94
+
95
+ ## Configuration
96
+
97
+ Config is stored in `~/.easecloud/mageperf/config.json`.
98
+
99
+ ```bash
100
+ # Set your Google PageSpeed API key (optional, improves accuracy)
101
+ mageperf config set pagespeed-api-key YOUR_KEY
102
+
103
+ # Change the local UI port (default: 4780)
104
+ mageperf config set server-port 4780
105
+ ```
106
+
107
+ Get a free PageSpeed API key at [Google Cloud Console](https://console.cloud.google.com/).
108
+ Without a key, `mageperf` falls back to direct HTTP analysis.
109
+
110
+ ---
111
+
112
+ ## How it works
113
+
114
+ Analysis runs in four layers:
115
+
116
+ 1. **Magento detection** — headers, HTML patterns, JS indicators, known paths
117
+ 2. **Performance** — PageSpeed Insights API (optional) or direct HTTP timing
118
+ 3. **Security** — admin URL exposure, debug headers, error reporting
119
+ 4. **Configuration** — caching strategy, JS/CSS bundling, deployment mode
120
+
121
+ All checks use only publicly available data. No credentials, no admin access required.
122
+
123
+ ---
124
+
125
+ ## Output example
126
+
127
+ ```
128
+ Overall Score: 74/100
129
+
130
+ Performance 82 ████████░░
131
+ Security 61 ██████░░░░
132
+ Config 79 ███████░░░
133
+
134
+ 2 critical issues found. Run with --open to view full report.
135
+ Report saved: ~/.easecloud/mageperf/reports/abc123.json
136
+ ```
137
+
138
+ > **Found critical issues?** EaseCloud provides [Magento performance optimization consulting](https://www.easecloud.io/magento-performance-optimization) — Core Web Vitals, caching strategy, infrastructure tuning, and more.
139
+
140
+ ---
141
+
142
+ ## Development
143
+
144
+ ```bash
145
+ git clone https://github.com/easecloudio/mageperf.git
146
+ cd mageperf
147
+ pip install -e ".[dev]"
148
+
149
+ # Run tests
150
+ pytest tests/ -v
151
+
152
+ # Build the UI (requires Node 18+)
153
+ cd ui && npm install && npm run build
154
+ ```
155
+
156
+ ### Project structure
157
+
158
+ ```
159
+ mageperf/ Python package
160
+ cli.py Typer CLI entry point
161
+ config.py Config management (~/.easecloud/mageperf/)
162
+ core/ Analysis engine
163
+ magento_checker.py
164
+ performance_checker.py
165
+ analysis_orchestrator.py
166
+ scoring_service.py
167
+ storage/ Local JSON report store
168
+ server/ stdlib HTTP server + pre-built UI
169
+ static/ Pre-built Next.js UI
170
+ tests/ pytest test suite (20 tests)
171
+ ui/ Next.js 15 UI source (TypeScript)
172
+ Dockerfile Docker image build
173
+ install.sh Universal install script
174
+ package.json npm wrapper (@easecloud/mageperf)
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Contributing
180
+
181
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
182
+
183
+ ---
184
+
185
+ ## Work with EaseCloud
186
+
187
+ `mageperf` finds the problems. Need help fixing them?
188
+
189
+ We offer end-to-end [Magento performance optimization](https://www.easecloud.io/magento-performance-optimization) — from diagnosis to implementation across caching, Core Web Vitals, infrastructure, and deployment.
190
+
191
+ Contact: [support@easecloud.io](mailto:support@easecloud.io) · [easecloud.io](https://easecloud.io)
192
+
193
+ ---
194
+
195
+ ## License
196
+
197
+ MIT © [EaseCloud](https://easecloud.io)