Skip to content

docs: integration notes, Vercel limits, SPEI testing, history; Supabase keep-alive - #143

Merged
Kalebtron1 merged 22 commits into
mainfrom
claude/friendly-cori-rdbc1g
Oct 22, 2026
Merged

Kalebtron1 merged 22 commits into
mainfrom
claude/friendly-cori-rdbc1g

Conversation

@Kalebtron1

Copy link
Copy Markdown
Owner

Summary

Documents every external integration from the code and the merged PRs, corrects the docs that no longer matched the app, and adds a keep-alive so the Supabase Free project isn't paused for inactivity.

Code (one commit)

  • api/_supabase.mjs: pingSupabase() reads one row with a 5 s timeout.
  • /api/readiness now checks Supabase: 200 with checks.supabase "ok" or "not_configured", 503 "not_ready" when Supabase fails. No new Vercel function (still 10 of the Hobby limit of 12).
  • .github/workflows/supabase-keepalive.yml: calls production /api/readiness at minute 17 every 6 hours and fails unless Supabase answers, so GitHub emails on failure. KEEPALIVE_BASE_URL (repo variable) overrides the URL; it can also be run by hand.
  • Tests for the readiness states; src/test/setup.ts skips window-only mocks in node-environment tests.

Why this design: Supabase pauses Free projects with too little DB activity over 7 days ("a few requests a day" prevents it). Vercel Cron on Hobby runs at most once a day, so a GitHub schedule is used instead.

Docs

  • New docs/integrations/: overview table, Soroban RPC, Horizon + Friendbot, DeFindex, Privy, Stellar Wallets Kit, BlindPay (SPEI), Supabase, USDC faucet, Vercel (function count and Hobby limits checked against Vercel's docs on 2026-10-22), WebSocket (not connected), other services, pending/half-finished integrations.
  • New docs/spei-testing.md (sandbox setup, simulate, sentinel amounts, risks from Bind BlindPay SPEI payouts to a verified on-chain withdrawal #91/Make on-ramp settlement idempotent and gate simulate mode #92) and docs/history.md (merged PRs by stage).
  • Rewritten to match the code: architecture.md, flows.md, api.md (no nonce, all 10 endpoints), deployment.md (port 8080, every env var, scheduled jobs).
  • contracts/migration.md: warning that no contract has an upgrade function, plus corrected init arguments. runbook.md: real production URLs. websocket.md: status note. 00-Index.md links everything.
  • No secrets or variable values anywhere.

Checks

  • npm test: 60/60 pass (9 files).
  • ESLint clean on the changed JS/TS files.
  • npx tsc --noEmit -p tsconfig.app.json: 23 errors, same as main.
  • find api -name '*.js' | wc -l = 10.
  • Relative links and anchors in docs/ checked with a script.

After merge

  • Vercel redeploys /api/readiness; then run supabase-keepalive once from the Actions tab to confirm it's green.

Generated by Claude Code

claude added 22 commits October 22, 2026 05:53
…y 6 hours

Supabase pauses Free plan projects that see little database activity over
7 days. Nothing in the repo generated that activity, so a quiet week would
pause the project and break the faucet dedup and the SPEI on-ramp.

- api/_supabase.mjs: pingSupabase() reads one row (5 s timeout) and reports
  "ok", "not_configured" or throws.
- /api/readiness now checks Supabase: 200 with checks.supabase "ok" or
  "not_configured", 503 "not_ready" when Supabase fails. No new Vercel
  function (still 10 of the Hobby limit of 12).
- .github/workflows/supabase-keepalive.yml calls production /api/readiness
  at minute 17 every 6 hours and fails if Supabase is not "ok", so GitHub
  emails when the project stops answering. KEEPALIVE_BASE_URL (repo
  variable) overrides the URL.
- Tests for the three readiness states; the shared test setup now skips
  window-only mocks when a test runs in the node environment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…d failure modes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…ure modes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
… failure modes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…lls and WalletConnect

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…s and failure modes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…what is missing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…to do at the limit

Function count verified against vercel.json (10 of 12) and limits checked against
Vercel's docs on 2026-10-22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…Hub, Google Fonts and Lovable

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
… partial integrations

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…s and current routes

Removes outdated parts (XLM staking, Freighter-only auth, polling credit, staking APY)
and links every layer to its integration note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…, scoring, loans and treasury

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
… faucet, readiness)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…scheduled jobs

Also removes the claim that the staking_pool ID is hard-coded and documents that
contracts are redeployed, not upgraded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…ce; fix init args and URLs

The migration guide described an upgrade path that the deployed contracts don't
support (none implements an upgrade function), and its init commands were missing
the admin/vault (staking_pool) and treasury (vinculo_lending) arguments. The runbook
now points at the real production domain and the readiness check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
…x runbook anchors

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdHcE65RWNbp7Fwjug6WZL
Copilot AI balanced review requested due to automatic review settings October 22, 2026 06:09
@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
vyn-oficial Ready Ready Preview Oct 22, 2026 6:11am UTC

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Kalebtron1
Kalebtron1 merged commit 07bb558 into main Oct 22, 2026
3 checks passed

This branch was successfully deployed

1 active deployment
Preview — 715c47bc Deployed Oct 22, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants