Status
Config & connectivity
Local env, canisters, ledger, Supabase tables & RPCs. Ops steps below for schema apply and static deploy.
Ops remaining checklist
1. Apply Supabase schema
SQL Editor → paste supabase/full-bundle.sql (or ./scripts/cat-bundle.sh --copy). Then run scripts/verify-supabase-rpcs.sql.
2. Realtime publication
Dashboard → Database → Publications: xfts, bags, bag_events, listings, labels, trades, bag_token_balances.
3. Public env
NEXT_PUBLIC_SUPABASE_URL + NEXT_PUBLIC_SUPABASE_ANON_KEY in .env.local (and bake into static build).
4. Reindex smoke
Wallet → Reindex my XFTs (reindexOwnerClient). Optional: OWNER=… ./scripts/reindex-owner.sh
5. Static export → IC assets
npm run build:static → out/ (stashes /api during build). Deploy out/ as frontend_assets.
6. Node API host (oracle / partner / sync)
npm run dev or next start serves /api/oracle/advise, /api/prices, /api/xft, /api/sync/*. Set NEXT_PUBLIC_ORACLE_URL for bags. Alt: Supabase Edge dexsta-oracle.
7. Protocol bags (canisters/ monorepo)
Upgrade bag WASM + configure-bag-webhook.sh + point oracle HTTPS at this host or Edge function.
7b. Admin · owner fee unlock (bridge + bags)
dfx deploy bridge + bag → open /admin as bridge admin → save owner-fee unlock/cap (settings 18/19) + DAB liquid goal (15) → apply to each bag principal.
8. Market trade webhook
dfx deploy market → MARKET_ID=… npm run configure:market-trades (Supabase upsert_trade_mirror or /api/sync/trade).
npm run supabase:bundle:copy
npm run verify # Node host health
npm run smoke
npm run build:static # → out/
BAG_ID=… ./scripts/configure-bag-webhook.sh
MARKET_ID=… ./scripts/configure-market-trade-webhook.sh
notes/design/MIGRATION.md
Schema: supabase/full-bundle.sql · docs: supabase/README.md · notes/design/OPS.md