As of Jan 1, 2026 Shopify retired the legacy shpat_ token flow. This app now uses
OAuth client credentials — the CLIENT_ID and CLIENT_SECRET
are set in Vercel env vars and never touch the browser.
Chowda uses SHOPIFY_CHOWDA_SHOP_DOMAIN, SHOPIFY_CHOWDA_CLIENT_ID, SHOPIFY_CHOWDA_CLIENT_SECRET, SHOPIFY_CHOWDA_API_VERSION.
Born Into It uses SHOPIFY_BORNINTO_SHOP_DOMAIN, SHOPIFY_BORNINTO_CLIENT_ID, SHOPIFY_BORNINTO_CLIENT_SECRET, SHOPIFY_BORNINTO_API_VERSION.
x-store header (Chowda vs Born Into It credentials)./api/shopify-test which exchanges client credentials for an access token and pings /shop.json.####, {STYLE}, {COLOR}, {SIZE}####, {STYLE}, {COLOR}
Supabase credentials live in Vercel env vars (SUPABASE_URL,
SUPABASE_SERVICE_ROLE_KEY) and never touch the browser. The server writes to the shared
sku_counters row (name='T-Shirt_Hoodie') so SKUs stay sequential with the legacy backbone-db tool.
Each publish also appends to publish_log and upserts into designs.
-- Shared SKU counter (ALREADY EXISTS in backbone-db — do not recreate) -- sku_counters(id bigint, name text unique, value int4) -- Current row: name='T-Shirt_Hoodie' -- Publish history / audit trail — run this in backbone-db create table if not exists publish_log ( id bigint generated by default as identity primary key, created_at timestamptz default now(), device_id text, design_slug text, design_name text, product_title text, product_handle text, shopify_product_id text, sku_from int4, sku_to int4, variant_count int4, price_min numeric(10,2), price_max numeric(10,2), styles text[], colors text[], status text, payload jsonb ); create index if not exists publish_log_created_idx on publish_log (created_at desc); create index if not exists publish_log_slug_idx on publish_log (design_slug); -- Design registry — one row per unique design slug create table if not exists designs ( slug text primary key, name text, vibe text, tags text[], first_seen timestamptz default now(), last_used timestamptz default now(), publish_count int4 default 0, thumbnail_url text ); -- RLS: the server uses the service role key, which bypasses RLS. -- No policies needed unless you also plan to hit these tables from the browser.
Base price per garment style. Size upcharges stack on top of the base.
Choose whether weights are entered and sent to Shopify in ounces or pounds. Pound weights are sent with two decimal places. Apparel weights can vary by size; hat weights stay fixed per style.
| Style / Color | Size | SKU | Weight | Price |
|---|