FFrameCraft Ops

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

Checking…
StorefrontNext.js 14.2vercel

No /api/health route yet — probing root GET. Add app/api/health/route.ts.

ShadowboxFrames.com

SBF storefront — shadow-box frames

Checking…
StorefrontNext.js 14.2vercel

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

Checking…
StorefrontNext.js 14.2vercel

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)

Checking…
APIExpress 5 (Vercel serverless)vercel

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

Checking…
Internal appNext.js 16.2vercel

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

Checking…
Shopify functionTypeScript → Wasm (Javy) Shopify Functionshopify

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

Checking…
Shopify functionCheckout UI Extensionshopify

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

Checking…
External dependencyShopify Plusshopify

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)

Checking…
External dependencyPostgressupabase

No direct probe — checked transitively through framecraft-api /api/health/db.

Cloudflare R2

Object storage — customer print files + product/lifestyle asset buckets

Checking…
External dependencyS3-compatiblecloudflare

Bucket reachability best asserted via a service that signs/reads an object.

reviews.io

Product + company reviews (deferred — flagship Epic G, needs Plus tier)

Checking…
External dependencySaaS widgetnone

Not yet integrated (aggregate rating mocked). Track as a pending integration.