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.
- easecloud_mageperf-0.1.0/.github/workflows/ci.yml +28 -0
- easecloud_mageperf-0.1.0/.github/workflows/publish.yml +62 -0
- easecloud_mageperf-0.1.0/.gitignore +36 -0
- easecloud_mageperf-0.1.0/CONTRIBUTING.md +86 -0
- easecloud_mageperf-0.1.0/Dockerfile +24 -0
- easecloud_mageperf-0.1.0/LICENSE +21 -0
- easecloud_mageperf-0.1.0/PKG-INFO +229 -0
- easecloud_mageperf-0.1.0/README.md +197 -0
- easecloud_mageperf-0.1.0/bin/mageperf.js +33 -0
- easecloud_mageperf-0.1.0/install.sh +51 -0
- easecloud_mageperf-0.1.0/mageperf/__init__.py +1 -0
- easecloud_mageperf-0.1.0/mageperf/cli.py +375 -0
- easecloud_mageperf-0.1.0/mageperf/config.py +65 -0
- easecloud_mageperf-0.1.0/mageperf/core/__init__.py +0 -0
- easecloud_mageperf-0.1.0/mageperf/core/analysis_orchestrator.py +170 -0
- easecloud_mageperf-0.1.0/mageperf/core/analyzers.py +42 -0
- easecloud_mageperf-0.1.0/mageperf/core/magento_checker.py +986 -0
- easecloud_mageperf-0.1.0/mageperf/core/models.py +52 -0
- easecloud_mageperf-0.1.0/mageperf/core/performance_checker.py +882 -0
- easecloud_mageperf-0.1.0/mageperf/core/scoring_service.py +385 -0
- easecloud_mageperf-0.1.0/mageperf/server/__init__.py +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/server.py +152 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/404/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/404.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/XrYr7sSal45oZokrlFrej/_buildManifest.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/XrYr7sSal45oZokrlFrej/_ssgManifest.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/125-014fe32049f39f76.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/145-a6dda3b64883afbf.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/160-84ddd8a26c2525f2.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/173-60125878c10d48ba.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/196-2b187cbc4d3238ba.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/356-44a22847ee0b86e8.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/4-a44b517de328e4e5.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/421-5c2e326761a34bc4.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/470-92a45c1517b6dac3.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/4bd1b696-9911af18dede28aa.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/592-8d9214a931227599.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/690-7c6984ad51c61c5a.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/698-f8747db3dcffb70e.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/764-3b5bc7d4108db382.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/775-e29fff578ae06723.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/891-c276c906e578a456.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/920-79b2404ad9f4572d.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/964-03261b559353fef7.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/_not-found/page-1ce309e89987b660.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/all-analysis/page-55c88d5c71ee6abf.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/layout-10056b9e84dd162c.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/onboarding/page-f211aa61b3474b62.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/page-fa14acc4f2e74f1b.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/profile/page-81b663ffda30bc9d.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/progress/page-b1fdfe300ca46260.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/core-web-vitals/page-ed20d1baee76d360.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/layout-ac44376c1e343fad.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/page-a43da525cb02d1a6.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/performance-trends/page-ee3c07e421a06649.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/recommendations/optimization/page-e0d27470c0df9a92.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/recommendations/page-d1001f43c8b746c8.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/recommendations/performance-opportunities/page-640679af7ca30acd.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/roadmap/page-841594bb9fecaadd.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/report/[task_id]/technical-analysis/page-592a0692710f876c.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/app/settings/page-2a9d4f3ecc6daad5.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/framework-65ef2e26b6c3f974.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/main-93a22076b5e3a16b.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/main-app-c5b456ce9be1db29.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/pages/_app-035473a38fdb4b73.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/pages/_error-dff1d5ef0ecd42ce.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/chunks/webpack-14eec64ca602819f.js +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/css/3d79f7d5e2d2dd32.css +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/css/de70bee13400563f.css +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/747892c23ea88013-s.woff2 +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/8d697b304b401681-s.woff2 +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/9610d9e46709d722-s.woff2 +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/_next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/all-analysis/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/all-analysis/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/favicon.ico +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/file.svg +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/globe.svg +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/logo.png +0 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/manifest.json +97 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/next.svg +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/onboarding/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/onboarding/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/profile/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/profile/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/progress/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/progress/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/core-web-vitals/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/core-web-vitals/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/performance-trends/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/performance-trends/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/optimization/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/optimization/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/performance-opportunities/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/recommendations/performance-opportunities/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/roadmap/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/roadmap/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/technical-analysis/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/report/_/technical-analysis/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/settings/index.html +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/settings/index.txt +24 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/vercel.svg +1 -0
- easecloud_mageperf-0.1.0/mageperf/server/static/window.svg +1 -0
- easecloud_mageperf-0.1.0/mageperf/storage/__init__.py +0 -0
- easecloud_mageperf-0.1.0/mageperf/storage/store.py +79 -0
- easecloud_mageperf-0.1.0/mageperf/utils/__init__.py +0 -0
- easecloud_mageperf-0.1.0/mageperf/utils/http_client.py +85 -0
- easecloud_mageperf-0.1.0/mageperf/utils/logger.py +14 -0
- easecloud_mageperf-0.1.0/mageperf/utils/security.py +44 -0
- easecloud_mageperf-0.1.0/package.json +16 -0
- easecloud_mageperf-0.1.0/pyproject.toml +54 -0
- easecloud_mageperf-0.1.0/requirements-dev.txt +3 -0
- easecloud_mageperf-0.1.0/tests/__init__.py +0 -0
- easecloud_mageperf-0.1.0/tests/test_analyze_command.py +66 -0
- easecloud_mageperf-0.1.0/tests/test_config.py +32 -0
- easecloud_mageperf-0.1.0/tests/test_report_commands.py +53 -0
- easecloud_mageperf-0.1.0/tests/test_server.py +76 -0
- easecloud_mageperf-0.1.0/tests/test_store.py +55 -0
- easecloud_mageperf-0.1.0/tests/test_utils.py +17 -0
- easecloud_mageperf-0.1.0/ui/.gitignore +44 -0
- easecloud_mageperf-0.1.0/ui/README.md +36 -0
- easecloud_mageperf-0.1.0/ui/components.json +21 -0
- easecloud_mageperf-0.1.0/ui/eslint.config.mjs +16 -0
- easecloud_mageperf-0.1.0/ui/next.config.ts +9 -0
- easecloud_mageperf-0.1.0/ui/package-lock.json +9277 -0
- easecloud_mageperf-0.1.0/ui/package.json +52 -0
- easecloud_mageperf-0.1.0/ui/postcss.config.mjs +5 -0
- easecloud_mageperf-0.1.0/ui/public/file.svg +1 -0
- easecloud_mageperf-0.1.0/ui/public/globe.svg +1 -0
- easecloud_mageperf-0.1.0/ui/public/logo.png +0 -0
- easecloud_mageperf-0.1.0/ui/public/manifest.json +97 -0
- easecloud_mageperf-0.1.0/ui/public/next.svg +1 -0
- easecloud_mageperf-0.1.0/ui/public/vercel.svg +1 -0
- easecloud_mageperf-0.1.0/ui/public/window.svg +1 -0
- easecloud_mageperf-0.1.0/ui/src/app/all-analysis/page.tsx +896 -0
- easecloud_mageperf-0.1.0/ui/src/app/favicon.ico +0 -0
- easecloud_mageperf-0.1.0/ui/src/app/globals.css +494 -0
- easecloud_mageperf-0.1.0/ui/src/app/layout.tsx +64 -0
- easecloud_mageperf-0.1.0/ui/src/app/onboarding/page.tsx +866 -0
- easecloud_mageperf-0.1.0/ui/src/app/page.tsx +130 -0
- easecloud_mageperf-0.1.0/ui/src/app/profile/page.tsx +406 -0
- easecloud_mageperf-0.1.0/ui/src/app/progress/page.tsx +251 -0
- easecloud_mageperf-0.1.0/ui/src/app/providers.tsx +14 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/PageContent.tsx +1097 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/core-web-vitals/PageContent.tsx +42 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/core-web-vitals/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/layout.tsx +16 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/page.tsx +11 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/performance-trends/PageContent.tsx +943 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/performance-trends/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/PageContent.tsx +176 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/optimization/PageContent.tsx +71 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/optimization/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/performance-opportunities/PageContent.tsx +94 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/recommendations/performance-opportunities/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/roadmap/PageContent.tsx +42 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/roadmap/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/technical-analysis/PageContent.tsx +42 -0
- easecloud_mageperf-0.1.0/ui/src/app/report/[task_id]/technical-analysis/page.tsx +3 -0
- easecloud_mageperf-0.1.0/ui/src/app/settings/page.tsx +980 -0
- easecloud_mageperf-0.1.0/ui/src/components/BrandedEmptyState.tsx +132 -0
- easecloud_mageperf-0.1.0/ui/src/components/BrandedLoading.tsx +125 -0
- easecloud_mageperf-0.1.0/ui/src/components/EaseCloudCTA.tsx +113 -0
- easecloud_mageperf-0.1.0/ui/src/components/MainSidebar.tsx +657 -0
- easecloud_mageperf-0.1.0/ui/src/components/MarkdownRenderer.tsx +35 -0
- easecloud_mageperf-0.1.0/ui/src/components/PoweredByEaseCloud.tsx +69 -0
- easecloud_mageperf-0.1.0/ui/src/components/analysis/AnalysisCard.tsx +45 -0
- easecloud_mageperf-0.1.0/ui/src/components/app-sidebar.tsx +150 -0
- easecloud_mageperf-0.1.0/ui/src/components/layout/AppLayout.tsx +169 -0
- easecloud_mageperf-0.1.0/ui/src/components/layout/DualSidebarLayout.tsx +149 -0
- easecloud_mageperf-0.1.0/ui/src/components/layout/GridSystem.tsx +284 -0
- easecloud_mageperf-0.1.0/ui/src/components/layout/PageTransition.tsx +404 -0
- easecloud_mageperf-0.1.0/ui/src/components/layout/ReportSidebar.tsx +241 -0
- easecloud_mageperf-0.1.0/ui/src/components/lazy/LazyReportComponents.tsx +95 -0
- easecloud_mageperf-0.1.0/ui/src/components/logo.tsx +42 -0
- easecloud_mageperf-0.1.0/ui/src/components/mobile/MobileNavigation.tsx +316 -0
- easecloud_mageperf-0.1.0/ui/src/components/nav-analyses.tsx +129 -0
- easecloud_mageperf-0.1.0/ui/src/components/nav-main.tsx +89 -0
- easecloud_mageperf-0.1.0/ui/src/components/nav-projects.tsx +92 -0
- easecloud_mageperf-0.1.0/ui/src/components/nav-secondary.tsx +40 -0
- easecloud_mageperf-0.1.0/ui/src/components/nav-user.tsx +124 -0
- easecloud_mageperf-0.1.0/ui/src/components/performance/BenchmarkComparison.tsx +565 -0
- easecloud_mageperf-0.1.0/ui/src/components/performance/PerformanceComparisonCharts.tsx +558 -0
- easecloud_mageperf-0.1.0/ui/src/components/performance/PerformanceGoalTracker.tsx +644 -0
- easecloud_mageperf-0.1.0/ui/src/components/report/CoreWebVitals.tsx +923 -0
- easecloud_mageperf-0.1.0/ui/src/components/report/OptimizationRoadmap.tsx +704 -0
- easecloud_mageperf-0.1.0/ui/src/components/report/PerformanceMetrics.tsx +260 -0
- easecloud_mageperf-0.1.0/ui/src/components/report/Recommendations.tsx +984 -0
- easecloud_mageperf-0.1.0/ui/src/components/report/ScoreCard.tsx +80 -0
- easecloud_mageperf-0.1.0/ui/src/components/report/TechnicalAnalysis.tsx +1513 -0
- easecloud_mageperf-0.1.0/ui/src/components/team-switcher.tsx +91 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/DetailModal.tsx +676 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/DynamicBreadcrumb.tsx +144 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/InteractiveTooltip.tsx +435 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/ProgressiveDisclosure.tsx +199 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/SearchFilter.tsx +390 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/Tooltip.tsx +107 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/TouchOptimized.tsx +457 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/alert.tsx +66 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/avatar.tsx +53 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/badge.tsx +46 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/breadcrumb.tsx +109 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/button.tsx +72 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/card.tsx +110 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/collapsible.tsx +33 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/dropdown-menu.tsx +257 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/feedback.tsx +491 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/input.tsx +21 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/label.tsx +24 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/optimized-image.tsx +425 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/progress.tsx +31 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/scroll-area.tsx +58 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/separator.tsx +28 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/sheet.tsx +139 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/sidebar.tsx +727 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/skeleton.tsx +24 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/skeletons.tsx +403 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/switch.tsx +31 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/tabs.tsx +66 -0
- easecloud_mageperf-0.1.0/ui/src/components/ui/textarea.tsx +27 -0
- easecloud_mageperf-0.1.0/ui/src/contexts/AppStateContext.tsx +195 -0
- easecloud_mageperf-0.1.0/ui/src/contexts/MockAuthContext.tsx +61 -0
- easecloud_mageperf-0.1.0/ui/src/contexts/ReportContext.tsx +63 -0
- easecloud_mageperf-0.1.0/ui/src/data/sampleReport1.json +3424 -0
- easecloud_mageperf-0.1.0/ui/src/data/sampleReports.ts +185 -0
- easecloud_mageperf-0.1.0/ui/src/hooks/use-mobile.ts +59 -0
- easecloud_mageperf-0.1.0/ui/src/hooks/useDeviceOptimization.ts +317 -0
- easecloud_mageperf-0.1.0/ui/src/lib/animations.ts +522 -0
- easecloud_mageperf-0.1.0/ui/src/lib/lazyLoading.tsx +406 -0
- easecloud_mageperf-0.1.0/ui/src/lib/localApi.ts +254 -0
- easecloud_mageperf-0.1.0/ui/src/lib/performance.ts +571 -0
- easecloud_mageperf-0.1.0/ui/src/lib/utils.ts +6 -0
- 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)
|