Hosting podpull.xiaolei.work (Vercel + Cloudflare)

July 22, 2026 · View on GitHub

Official site: https://podpull.xiaolei.work

  • / — marketing landing
  • /app — interactive UI (search / trending / per-episode browser download)
  • /api/* — metadata only (no audio proxy)

Sources of truth in this repo:

Edit thisDeployed as
docs/index.html (+ icons in docs/)public/index.html
src/podpull/serve/static/public/app/ (+ shared icons)
api/index.pyVercel Python function (BaseHTTPRequestHandler, stdlib + podpull.serve)

Sync before local preview or as the Vercel buildCommand:

python3 scripts/sync_web_public.py

Deploy (Vercel)

Project already created: xiaoleiys-projects/podpull (production alias: https://podpull.vercel.app).

CLI redeploy (from a machine logged into that team):

python3 scripts/sync_web_public.py
vercel deploy --prod --yes --scope xiaoleiys-projects

Optional: connect the GitHub repo in the Vercel dashboard (Project → Settings → Git) so pushes to main auto-deploy. The CLI vercel git connect needs the Vercel GitHub app installed on xiaoleiy/podpull.

DNS (Cloudflare) — podpull.xiaolei.work

Live record (DNS only / grey cloud):

TypeNameContentProxy
CNAMEpodpullf59d5642c46f87ba.vercel-dns-017.comDNS only

This is Vercel’s recommended target for the project (preferred over the generic 76.76.21.21 A). Keep DNS only so Vercel terminates TLS.

dig +short podpull.xiaolei.work CNAME
curl -sS https://podpull.xiaolei.work/api/health

Vercel project: xiaoleiys-projects/podpull · also https://podpull.vercel.app

After DNS propagates, check:

Local twin

podpull serve   # same UI/API contract on localhost

Audio always downloads from the publisher CDN in the browser — neither Vercel nor serve proxies episode bytes.