Skip to content

feat(landing): dual-rail rewrite + Vercel deploy pipeline#27

Open
ggonzalez94 wants to merge 2 commits intomainfrom
handsome-seer
Open

feat(landing): dual-rail rewrite + Vercel deploy pipeline#27
ggonzalez94 wants to merge 2 commits intomainfrom
handsome-seer

Conversation

@ggonzalez94
Copy link
Copy Markdown
Member

@ggonzalez94 ggonzalez94 commented Apr 18, 2026

Summary

Landing page rewrite for the dual-rail (x402 + MPP) story, plus a Vercel deploy pipeline so the landing is shippable independently of the API service.

Landing page

  • Rewrites src/landing.ts to tell the dual-rail story end-to-end: x402 on Taiko (USDC) and MPP on Tempo (USDC.e).
  • Adds a dedicated "Payment rails" section comparing the two protocols side-by-side (asset / chain / header).
  • Tabbed code example@x402/fetch on one tab, mppx/client on the other.
  • Copy-to-clipboard endpoint and an actionable primary CTA; stats row swapped from "100 MB max" to "2 chains, 2 payment rails".
  • OG + Twitter Card meta tags so link previews render correctly.
  • API grid now lists POST /pins/:requestid (replace) and /.well-known/agent.json, both previously missing.
  • Hardcoded prod URL (tack.taiko.xyz) so the landing is portable regardless of which backend hostname is serving it.

Screenshots (desktop + mobile, before / after) were iterated on in-browser — rails section renders cleanly at tablet and above; mobile stacks to single column.

Vercel deploy pipeline

  • scripts/build-landing.ts renders landingPageHtml() to dist/landing/index.html.
  • .github/workflows/deploy-landing.yml:
    • Preview job on PRs touching the landing — builds + npx vercel@latest deploy + posts URL as a PR comment (edits the last one on subsequent pushes).
    • Production job on pushes to main — same but with --prod, gated on the production-landing GitHub environment.
  • Runs on arc-runner-set with Node 22 + corepack (matches existing CI conventions). Uses npx vercel@latest so the CLI is always fresh.
  • Path filters scope the workflow to landing-related changes only; unrelated backend PRs won't trigger it.

Secrets wired up

Secret Scope
VERCEL_TOKEN Repo
VERCEL_PROJECT_ID Repo (prj_F2qQcglM2zh9dQMRsmGTIeYYuMkJ)
VERCEL_ORG_ID Inherited from taikoxyz org

Test plan

  • pnpm lint / pnpm typecheck / pnpm test (158/158) / pnpm build all pass locally
  • pnpm build:landing emits dist/landing/index.html (~51 KB, 0 localhost references)
  • Hero, rails, API, pricing, integrate, footer visually verified at 1440, 1280, 768, 390
  • Tab switching, copy button, nav anchors verified in-browser
  • Preview deploy lands on this PR — review URL and confirm tack.taiko.xyz production domain is mapped on the Vercel project before merging
  • Production deploy on merge to main

Note

Medium Risk
Medium risk because it introduces a new GitHub Actions workflow that deploys to Vercel (secrets, PR commenting, production environment gating) and significantly rewrites the landing-page HTML/JS; core API/payment logic is otherwise untouched.

Overview
Updates the landing page to be dual-rail (x402 + MPP), including a new “Payment rails” section, refreshed copy/pricing, expanded API surface callouts (adds POST /pins/:requestid and /.well-known/agent.json), and new interactive UI (copy-to-clipboard endpoint + tabbed code samples). The landing renderer now hardcodes the production URL (https://tack.taiko.xyz) and src/app.ts calls landingPageHtml() without deriving an origin.

Adds a dedicated pnpm build:landing pipeline (scripts/build-landing.ts) that emits dist/landing/index.html, expands ESLint TS config to include scripts/, and introduces a new deploy-landing GitHub Actions workflow that builds and deploys the landing to Vercel on PRs (commenting the preview URL) and to production on main pushes (GitHub environment gated).

Reviewed by Cursor Bugbot for commit 7049417. Bugbot is set up for automated code reviews on this repo. Configure here.

ggonzalez94 and others added 2 commits April 18, 2026 18:21
Agent-native positioning, dedicated "Payment rails" section comparing
x402/Taiko and MPP/Tempo, tabbed code example for both rails, copy-to-
clipboard endpoint, tighter CTAs, and OG/Twitter card meta. Hardcoded
prod URL (tack.taiko.xyz) so the landing is portable independent of
where the backend is served from.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Introduces scripts/build-landing.ts that renders landingPageHtml() to
dist/landing/index.html, and a deploy-landing workflow that builds on
arc-runner-set and ships via `npx vercel@latest deploy`. Preview deploys
on PRs touching the landing (auto-comments URL on the PR); production
deploys on merges to main. Includes scripts/ in tsconfig.eslint so the
new build script is linted.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ggonzalez94 ggonzalez94 requested a review from kimo-ice as a code owner April 18, 2026 22:24
@github-actions
Copy link
Copy Markdown

Landing preview: https://tack-pjrviieqd-taikoxyz.vercel.app

Built from b8e4ccb

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 7049417. Configure here.

Comment thread src/landing.ts
<button class="btn-primary" data-copy="${o}" aria-label="Copy API endpoint to clipboard">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
<span class="copy-btn-label">Copy endpoint</span>
</button>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hero copy button lacks "copied" visual feedback

Low Severity

The hero copy button has class btn-primary but the JS copy handler (selecting all [data-copy] elements) adds the copied class to it on click. The CSS rule .copy-btn.copied only matches elements that also have the copy-btn class, so the green "copied" visual state never activates on the hero button. The endpoint-section button works correctly because it has the copy-btn class.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7049417. Configure here.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 704941753e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

jobs:
deploy-preview:
name: Preview
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false && github.event.pull_request.head.repo.fork == false }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Skip preview deploys for Dependabot PRs without secrets

The preview job runs for any non-fork PR, but GitHub treats dependabot[bot] pull_request runs like forked runs: Actions secrets are unavailable and GITHUB_TOKEN is read-only. Because this workflow is also triggered by package.json/pnpm-lock.yaml changes, Dependabot dependency PRs will satisfy this if and then fail in Deploy preview to Vercel when VERCEL_TOKEN is missing, creating permanently red CI for automated updates.

Useful? React with 👍 / 👎.

run: |
set -euo pipefail
body=$(printf '**Landing preview:** %s\n\nBuilt from %s' "$PREVIEW_URL" "${GITHUB_SHA:0:7}")
gh pr comment "$PR_NUMBER" --body "$body" --edit-last || \
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Avoid overwriting unrelated bot comments on the PR

gh pr comment --edit-last edits the last comment by the current user; in Actions that user is typically github-actions[bot] shared by other workflows. If another automation comment is newer than the landing preview comment, this command will rewrite that unrelated comment instead of updating the preview URL, causing loss of context on the PR thread.

Useful? React with 👍 / 👎.

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.

1 participant