Scan timing: clone 1.64s · analysis 30.57s · 2.1 MB · GitHub API rate-limit (preflight)
https://github.com/saleor/storefront
· scanned 2026-06-05 12:47 UTC (5 days, 10 hours ago)
· 10 languages
262 raw signals (108 security + 154 graph) 9th percentile · Typescript · medium (20-100K LoC) System graph score 75 (lower by 23)
Last scanned 5 days, 10 hours ago · v2 · 156 actionable findings from 2 signal sources. 28 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
85.0 | 0.15 | 12.75 |
security_score |
19.8 | 0.25 | 4.95 |
testing_score |
30.0 | 0.20 | 6.00 |
documentation_score |
65.7 | 0.15 | 9.86 |
practices_score |
77.0 | 0.15 | 11.55 |
code_quality |
68.4 | 0.10 | 6.84 |
| Overall | 1.00 | 51.9 |
All 1120 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
that |
software | healthy | global.d.ts:that |
is |
software | healthy | global.d.ts:is |
buildEslintCommand |
software | healthy | .lintstagedrc.js:buildEslintCommand |
formatPrice |
software | healthy | src/config/locale.ts:formatPrice |
formatDate |
software | healthy | src/config/locale.ts:formatDate |
formatNumber |
software | healthy | src/config/locale.ts:formatNumber |
formatPageTitle |
software | healthy | src/config/brand.ts:formatPageTitle |
getCopyrightText |
software | healthy | src/config/brand.ts:getCopyrightText |
getDefaultChannelSlug |
software | healthy | src/config/channels.ts:getDefaultChannelSlug |
parseEnvChannelList |
software | healthy | src/config/channels.ts:parseEnvChannelList |
getConfiguredStorefrontChannelSlugs |
software | healthy | src/config/channels.ts:getConfiguredStorefrontChannelSlugs |
isStorefrontChannelDiscoveryEnabled |
software | healthy | src/config/channels.ts:isStorefrontChannelDiscoveryEnabled |
needsAsyncChannelDiscovery |
software | healthy | src/config/channels.ts:needsAsyncChannelDiscovery |
warnIfDefaultChannelMissingFromAllowlist |
software | healthy | src/config/channels.ts:warnIfDefaultChannelMissingFromAllow… |
getStaticStorefrontChannelSlugs |
software | healthy | src/config/channels.ts:getStaticStorefrontChannelSlugs |
isAllowedStorefrontChannel |
software | healthy | src/config/channels.ts:isAllowedStorefrontChannel |
filterToStorefrontChannels |
software | healthy | src/config/channels.ts:filterToStorefrontChannels |
toChannelSelectOptions |
software | healthy | src/config/channels.ts:toChannelSelectOptions |
shouldFetchChannelMetadata |
software | healthy | src/config/channels.ts:shouldFetchChannelMetadata |
saveEnv |
software | healthy | src/config/channels.test.ts:saveEnv |
restoreEnv |
software | healthy | src/config/channels.test.ts:restoreEnv |
Loader |
software | healthy | src/ui/atoms/loader.tsx:Loader |
LinkWithChannel |
software | healthy | src/ui/atoms/link-with-channel.tsx:LinkWithChannel |
ProductImageWrapper |
software | healthy | src/ui/atoms/product-image-wrapper.tsx:ProductImageWrapper |
FooterMenuChildLink |
software | healthy | src/ui/components/footer-menu-columns.tsx:FooterMenuChildLi… |
FooterMenuColumns |
software | healthy | src/ui/components/footer-menu-columns.tsx:FooterMenuColumns |
CopyrightText |
software | healthy | src/ui/components/copyright-text.tsx:CopyrightText |
Footer |
software | healthy | src/ui/components/footer.tsx:Footer |
Logo |
software | healthy | src/ui/components/logo.tsx:Logo |
OrderListItem |
software | healthy | src/ui/components/order-list-item.tsx:OrderListItem |
ProductElement |
software | healthy | src/ui/components/product-element.tsx:ProductElement |
ChannelSelect |
software | healthy | src/ui/components/channel-select.tsx:ChannelSelect |
FeaturedProductsSkeleton |
software | healthy | src/ui/components/featured-products-skeleton.tsx:FeaturedPr… |
SearchBarSkeleton |
software | healthy | src/ui/components/header.tsx:SearchBarSkeleton |
NavLinksSkeleton |
software | healthy | src/ui/components/header.tsx:NavLinksSkeleton |
Header |
software | healthy | src/ui/components/header.tsx:Header |
SignUpForm |
software | healthy | src/ui/components/sign-up-form.tsx:SignUpForm |
validateEmail |
software | healthy | src/ui/components/sign-up-form.tsx:validateEmail |
handleSubmit |
software | healthy | src/ui/components/sign-up-form.tsx:handleSubmit |
data |
software | healthy | src/ui/components/sign-up-form.tsx:data |
SearchResults |
software | healthy | src/ui/components/search-results.tsx:SearchResults |
SearchResultCard |
software | healthy | src/ui/components/search-results.tsx:SearchResultCard |
StorefrontProviders |
software | healthy | src/ui/components/storefront-providers.tsx:StorefrontProvid… |
PaymentStatus |
software | healthy | src/ui/components/payment-status.tsx:PaymentStatus |
LoginForm |
software | healthy | src/ui/components/login-form.tsx:LoginForm |
Pagination |
software | healthy | src/ui/components/pagination.tsx:Pagination |
ProductList |
software | healthy | src/ui/components/product-list.tsx:ProductList |
PageContentSkeleton |
software | healthy | src/ui/components/page-content-skeleton.tsx:PageContentSkel… |
Breadcrumbs |
software | healthy | src/ui/components/breadcrumbs.tsx:Breadcrumbs |
LoginMode |
software | healthy | src/ui/components/auth/login-mode.tsx:LoginMode |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
.prettierrc.json |
software | healthy | .prettierrc.json |
paper-version.json |
software | healthy | paper-version.json |
skills-lock.json |
software | healthy | skills-lock.json |
README.md |
software | healthy | README.md |
pnpm-lock.yaml |
software | healthy | pnpm-lock.yaml |
.graphqlrc.ts |
software | warning | .graphqlrc.ts |
package.json |
software | healthy | package.json |
next.config.js |
software | warning | next.config.js |
Dockerfile |
software | healthy | Dockerfile |
global.d.ts |
software | healthy | global.d.ts |
knip.config.ts |
software | warning | knip.config.ts |
pnpm-workspace.yaml |
software | healthy | pnpm-workspace.yaml |
.env.example |
software | healthy | .env.example |
tsconfig.json |
software | healthy | tsconfig.json |
.lintstagedrc.js |
software | healthy | .lintstagedrc.js |
SECURITY.md |
software | healthy | SECURITY.md |
AGENTS.md |
software | healthy | AGENTS.md |
docker-compose.yml |
software | healthy | docker-compose.yml |
vitest.config.ts |
software | warning | vitest.config.ts |
README.md |
software | healthy | skills/saleor-paper-storefront/README.md |
SKILL.md |
software | healthy | skills/saleor-paper-storefront/SKILL.md |
AGENTS.md |
software | healthy | skills/saleor-paper-storefront/AGENTS.md |
product-variants.md |
software | healthy | skills/saleor-paper-storefront/rules/product-variants.md |
data-auth-routes.md |
software | healthy | skills/saleor-paper-storefront/rules/data-auth-routes.md |
checkout-components.md |
software | healthy | skills/saleor-paper-storefront/rules/checkout-components.md |
data-caching.md |
software | healthy | skills/saleor-paper-storefront/rules/data-caching.md |
product-filtering.md |
software | healthy | skills/saleor-paper-storefront/rules/product-filtering.md |
dev-investigation.md |
software | healthy | skills/saleor-paper-storefront/rules/dev-investigation.md |
ui-channels.md |
software | healthy | skills/saleor-paper-storefront/rules/ui-channels.md |
data-graphql.md |
software | healthy | skills/saleor-paper-storefront/rules/data-graphql.md |
ui-components.md |
software | healthy | skills/saleor-paper-storefront/rules/ui-components.md |
seo-metadata.md |
software | healthy | skills/saleor-paper-storefront/rules/seo-metadata.md |
product-pdp.md |
software | healthy | skills/saleor-paper-storefront/rules/product-pdp.md |
checkout-management.md |
software | healthy | skills/saleor-paper-storefront/rules/checkout-management.md |
variant-state-machine.md |
software | healthy | skills/saleor-paper-storefront/references/variant-state-mac… |
saleor-key-directories.md |
software | healthy | skills/saleor-paper-storefront/references/saleor-key-direct… |
variant-utils-reference.md |
software | healthy | skills/saleor-paper-storefront/references/variant-utils-ref… |
manifest.json |
software | healthy | skills/saleor-paper-storefront/migrations/manifest.json |
paper-version.schema.json |
software | healthy | skills/saleor-paper-storefront/migrations/paper-version.sch… |
SKILL.md |
software | healthy | skills/saleor-paper-storefront/migrations/SKILL.md |
caching-overview.md |
software | healthy | skills/saleor-paper-storefront/migrations/references/cachin… |
detect.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-me… |
verify.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-me… |
MIGRATION.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-me… |
detect.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ho… |
verify.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ho… |
MIGRATION.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ho… |
detect.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ac… |
verify.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ac… |
MIGRATION.md |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ac… |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
skills |
software | healthy | skills |
saleor-paper-storefront |
software | healthy | skills/saleor-paper-storefront |
rules |
software | healthy | skills/saleor-paper-storefront/rules |
references |
software | healthy | skills/saleor-paper-storefront/references |
migrations |
software | healthy | skills/saleor-paper-storefront/migrations |
references |
software | healthy | skills/saleor-paper-storefront/migrations/references |
atomic |
software | healthy | skills/saleor-paper-storefront/migrations/atomic |
2026-06-menu-data-layer |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-me… |
2026-06-homepage-featured-layer |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ho… |
2026-06-account-ppr-auth |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ac… |
2026-06-cache-manifest-v3 |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ca… |
2026-06-plp-shell-split |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-pl… |
2026-06-channel-allowlist |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ch… |
2026-06-cache-life-profiles |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ca… |
2026-06-menu-webhooks |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-me… |
2026-06-channel-discovery-cache |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ch… |
2026-06-client-boundaries |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-cl… |
2026-06-pdp-ppr-islands |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-pd… |
2026-06-channel-scoped-tags |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-ch… |
2026-06-layout-route-loading |
software | healthy | skills/saleor-paper-storefront/migrations/atomic/2026-06-la… |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
config |
software | healthy | src/config |
ui |
software | healthy | src/ui |
atoms |
software | healthy | src/ui/atoms |
components |
software | healthy | src/ui/components |
auth |
software | healthy | src/ui/components/auth |
shared |
software | healthy | src/ui/components/shared |
ui |
software | healthy | src/ui/components/ui |
nav |
software | healthy | src/ui/components/nav |
components |
software | healthy | src/ui/components/nav/components |
user-menu |
software | healthy | src/ui/components/nav/components/user-menu |
components |
software | healthy | src/ui/components/nav/components/user-menu/components |
cart |
software | healthy | src/ui/components/cart |
plp |
software | healthy | src/ui/components/plp |
__fixtures__ |
software | healthy | src/ui/components/plp/__fixtures__ |
dev |
software | healthy | src/ui/components/dev |
account |
software | healthy | src/ui/components/account |
pdp |
software | healthy | src/ui/components/pdp |
variant-selection |
software | healthy | src/ui/components/pdp/variant-selection |
__fixtures__ |
software | healthy | src/ui/components/pdp/variant-selection/__fixtures__ |
renderers |
software | healthy | src/ui/components/pdp/variant-selection/renderers |
_reference |
software | healthy | src/_reference |
checkout-sections |
software | healthy | src/_reference/checkout-sections |
PaymentSection |
software | healthy | src/_reference/checkout-sections/PaymentSection |
AdyenDropIn |
software | healthy | src/_reference/checkout-sections/PaymentSection/AdyenDropIn |
DummyDropIn |
software | healthy | src/_reference/checkout-sections/PaymentSection/DummyDropIn |
StripeV2DropIn |
software | healthy | src/_reference/checkout-sections/PaymentSection/StripeV2Dro… |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
NotFound |
frontend | healthy | src/app/not-found.tsx |
RootPage |
frontend | healthy | src/app/page.tsx |
RootLayout |
frontend | healthy | src/app/layout.tsx |
ErrorPage |
frontend | healthy | src/app/error.tsx |
Page |
frontend | healthy | src/app/[channel]/(main)/page.tsx |
LoginPage |
frontend | healthy | src/app/[channel]/(main)/login/page.tsx |
SignUpPage |
frontend | healthy | src/app/[channel]/(main)/signup/page.tsx |
Page |
frontend | healthy | src/app/[channel]/(main)/cart/page.tsx |
Page |
frontend | healthy | src/app/[channel]/(main)/search/page.tsx |
CollectionLoading |
frontend | healthy | src/app/[channel]/(main)/collections/[slug]/loading.tsx |
PageLoading |
frontend | healthy | src/app/[channel]/(main)/pages/[slug]/loading.tsx |
Page |
frontend | healthy | src/app/[channel]/(main)/pages/[slug]/page.tsx |
CategoryLoading |
frontend | healthy | src/app/[channel]/(main)/categories/[slug]/loading.tsx |
AccountOverviewPage |
frontend | healthy | src/app/[channel]/(main)/account/page.tsx |
AccountLayout |
frontend | healthy | src/app/[channel]/(main)/account/layout.tsx |
AccountOrdersPage |
frontend | healthy | src/app/[channel]/(main)/account/orders/page.tsx |
OrderDetailPage |
frontend | healthy | src/app/[channel]/(main)/account/orders/[number]/page.tsx |
ProductsLoading |
frontend | healthy | src/app/[channel]/(main)/products/loading.tsx |
ProductNotFound |
frontend | healthy | src/app/[channel]/(main)/products/[slug]/not-found.tsx |
ProductLoading |
frontend | healthy | src/app/[channel]/(main)/products/[slug]/loading.tsx |
ProductPage |
frontend | healthy | src/app/[channel]/(main)/products/[slug]/page.tsx |
ProductLayout |
frontend | healthy | src/app/[channel]/(main)/products/[slug]/layout.tsx |
CheckoutPage |
frontend | healthy | src/app/checkout/page.tsx |
RootLayout |
frontend | healthy | src/app/checkout/layout.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
/page.tsx |
frontend | healthy | src/app/page.tsx |
/[channel]/(main) |
frontend | healthy | src/app/[channel]/(main)/page.tsx |
/[channel]/(main)/orders |
frontend | healthy | src/app/[channel]/(main)/orders/page.tsx |
/[channel]/(main)/login |
frontend | healthy | src/app/[channel]/(main)/login/page.tsx |
/[channel]/(main)/signup |
frontend | healthy | src/app/[channel]/(main)/signup/page.tsx |
/[channel]/(main)/cart |
frontend | healthy | src/app/[channel]/(main)/cart/page.tsx |
/[channel]/(main)/search |
frontend | healthy | src/app/[channel]/(main)/search/page.tsx |
/[channel]/(main)/collections/[slug] |
frontend | healthy | src/app/[channel]/(main)/collections/[slug]/page.tsx |
/[slug]/loading |
frontend | healthy | src/app/[channel]/(main)/pages/[slug]/loading.tsx |
/[slug]/page |
frontend | healthy | src/app/[channel]/(main)/pages/[slug]/page.tsx |
/[channel]/(main)/categories/[slug] |
frontend | healthy | src/app/[channel]/(main)/categories/[slug]/page.tsx |
/[channel]/(main)/account |
frontend | healthy | src/app/[channel]/(main)/account/page.tsx |
/[channel]/(main)/account/settings |
frontend | healthy | src/app/[channel]/(main)/account/settings/page.tsx |
/[channel]/(main)/account/orders |
frontend | healthy | src/app/[channel]/(main)/account/orders/page.tsx |
/[channel]/(main)/account/orders/[number] |
frontend | healthy | src/app/[channel]/(main)/account/orders/[number]/page.tsx |
/[channel]/(main)/account/addresses |
frontend | healthy | src/app/[channel]/(main)/account/addresses/page.tsx |
/[channel]/(main)/products |
frontend | healthy | src/app/[channel]/(main)/products/page.tsx |
/[channel]/(main)/products/[slug] |
frontend | healthy | src/app/[channel]/(main)/products/[slug]/page.tsx |
/checkout |
frontend | healthy | src/app/checkout/page.tsx |
/ |
frontend | healthy | src/app/api/auth/set-password/route.ts |
| Label | Layer | Status | Path |
|---|---|---|---|
name |
software | healthy | src/ui/components/ui/image-carousel.tsx:name |
RequestQueue |
software | healthy | src/lib/graphql.ts:RequestQueue |
is |
software | healthy | src/lib/graphql.ts:is |
SaleorError |
software | healthy | src/lib/graphql.ts:SaleorError |
names |
software | healthy | src/lib/utils.ts:names |
deduplication |
software | healthy | src/lib/utils.ts:deduplication |
names |
software | healthy | src/checkout/ui-kit/loading-spinner.tsx:names |
names |
software | healthy | src/checkout/components/shipping-address/address-card.tsx:n… |
name |
software | healthy | src/checkout/components/express-checkout/express-checkout.t… |
| Label | Layer | Status | Path |
|---|---|---|---|
port:64 |
network | healthy | pnpm-lock.yaml |
port:16 |
network | healthy | pnpm-lock.yaml |
port:3000 |
network | healthy | docker-compose.yml |
port:18 |
network | healthy | .github/workflows/update_types.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::lint |
cicd | healthy | .github/workflows/lint.yml |
gha::check-licenses |
cicd | healthy | .github/workflows/check-licenses.yaml |
gha::update_types |
cicd | healthy | .github/workflows/update_types.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
lint |
cicd | healthy | .github/workflows/lint.yml |
default |
cicd | healthy | .github/workflows/check-licenses.yaml |
check_saleor_release |
cicd | healthy | .github/workflows/update_types.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
saleor-storefront |
hardware | healthy | docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::src/checkout/views/saleor-checkout/inform… |
security | healthy | src/checkout/views/saleor-checkout/information-step.tsx |
password_literal::src/checkout/views/saleor-checkout/inform… |
security | healthy | src/checkout/views/saleor-checkout/information-step.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-njfk39yq |
software | healthy | /tmp/repobility-clone-njfk39yq |
| Label | Layer | Status | Path |
|---|---|---|---|
postgres |
data | healthy | docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | src/_reference/checkout-sections/PaymentSection/StripeV2Dro… |
| Label | Layer | Status | Path |
|---|---|---|---|
GITHUB_TOKEN |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/f2cf9b71-195f-43af-80b6-92922d55d511/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/f2cf9b71-195f-43af-80b6-92922d55d511/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.