Services
Service health
Live server-side health probes across the storefronts, API, order app, Shopify functions, and shared dependencies. Refreshes automatically every 60 seconds.
Probing services…
FrameCraft services
CustomFrameSizes.com
CFS storefront — custom frame-size configurator
No /api/health route yet — probing root GET. Add app/api/health/route.ts.
ShadowboxFrames.com
SBF storefront — shadow-box frames
No /api/health route yet — probing root GET.
CustomPictureFrames.com
CPF flagship — content/SEO built; designers 404 on 7 missing /api routes; mock commerce until Shopify Plus wired
Old SPA still live + ranking; Next rebuild content-complete, commerce mocked. Ships 2 of 9 designer API routes (frame-images/design-recommendations/upscale 404 while their flags are ON — handlers exist in packages/core, need route wrappers). /learn nav link 404s. No /api/health route.
FrameCraft API (BFF)
Shopify BFF — cart, checkout, orders webhook, customer accounts (OAuth)
Model service: /api/health + /api/health/db (pings Supabase). DB check: /api/health/db.
Order Fulfillment
Internal admin — search Shopify orders, download customer print files from R2
No /api/health route — we probe the root, which 307s to /login behind the auth gate. A 307 here means UP, not degraded.
Cart Transform Function
Shopify Function — applies the configurator's price to each line, but ONLY if the BFF's HMAC signature verifies
NOT MONITORED — a Shopify Function has no HTTP endpoint, so nothing is probed and the status is always 'unknown'. This is now SECURITY-CRITICAL: it is what verifies the price signature, and it fails CLOSED, so a bad deploy does not overcharge — it stops pricing lines at all. Verify by hand: (1) the function is deployed in Shopify Admin → Apps → CustomFrame Pricing → Extensions; (2) the CartTransform's $app:price_signing_key metafield matches the BFF's CART_PRICE_SIGNING_KEY; (3) a real checkout shows the configured price. If (2) is missing, every line silently loses its price.
Checkout Branding Extension
Shopify Checkout UI Extension — per-store logo/branding from cart attributes
Shopify-hosted UI extension — no health surface. Verify via synthetic checkout.
External dependencies
Shopify (cpf-headless)
Source of truth: products, carts, checkout, orders, customer accounts
Shared store for all three storefronts. Platform status: shopifystatus.com.
Supabase (Postgres)
Central app DB — accounts, saved designs, account photos (reached only via the API)
No direct probe — checked transitively through framecraft-api /api/health/db.
Cloudflare R2
Object storage — customer print files + product/lifestyle asset buckets
Bucket reachability best asserted via a service that signs/reads an object.
reviews.io
Product + company reviews (deferred — flagship Epic G, needs Plus tier)
Not yet integrated (aggregate rating mocked). Track as a pending integration.