尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Pinfo's website
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Source for pinfoapp.com, Pinfo's marketing website, served via GitHub Pages.
index.html — landing pageprivacy/index.html — privacy policy, served at /privacytos/index.html — terms of service, served at /tossite-notice/index.html — German Impressum (site notice), served at /site-noticeevent/index.html — event landing page, served at /event404.html — catch-all fallback that also handles per-event links
(/event/<uuid>) on GitHub Pages, since GitHub Pages has no server-side
rewrites. Kept byte-identical to event/index.html on purpose — see
"Two hosting setups" below. If you edit one, copy it over the other:
cp event/index.html 404.html.functions/event/[id].js — Cloudflare Pages Function that does the same
job as 404.html/event/index.html server-side (see below). Only takes
effect once this repo is actually deployed on Cloudflare Pages._headers, _routes.json — Cloudflare Pages config (ignored by GitHub
Pages). See "Two hosting setups".style.css — shared styleslib/carousel.js — testimonial carousel on the landing pagelib/qna.js — FAQ accordion on the landing pageassets/ — images, icons, badgesCNAME — custom domain (pinfoapp.com)robots.txt — allows all crawlers, points at sitemap.xmlsitemap.xml — lists the site's static pagesThis repo currently supports two ways of being hosted, and only one is actually live:
/event/<uuid> has no matching file, so it falls through to
404.html, served with an HTTP 404 status. Buttons/tags are filled in by
client-side JS after a Supabase fetch, so link-preview crawlers (which
don't run JS and mostly require a 200) never see the real event title,
image, or the magic-invite buttons — the crawler only sees the generic
placeholder card. This is a real, known limitation of static hosting, not
a bug to chase further here.functions/event/[id].js
server-renders the real og:/twitter: tags and returns HTTP 200 for
/event/<uuid>, which is what actually makes link previews work in
WhatsApp/iMessage/Slack. This requires the account owner to (a) create a
Cloudflare Pages project connected to this GitHub repo, and (b) move
pinfoapp.com's nameservers to Cloudflare and add it as the project's
custom domain. Neither step can be done from a coding session — both need
the Cloudflare dashboard and the domain registrar. Until that happens,
this repo keeps working exactly as it does today on GitHub Pages; none of
the Cloudflare-only files (functions/, _headers, _routes.json) do
anything on GitHub Pages, they're just inert.Because of this, event/index.html and 404.html must stay identical.
event/index.html is what Cloudflare's Function fetches as its template and
what serves the exact /event URL on GitHub Pages; 404.html is what
actually serves /event/<uuid> on GitHub Pages today. Any change to the
event page's markup or script (new buttons, copy changes, meta tags) needs
to go into both files, or the two hosting setups will silently drift and
whichever one is live at the time won't have the fix. Once the Cloudflare
cutover happens, 404.html's only remaining job is the true 404 case
(non-event unmatched paths), and it could reasonably be trimmed back down
at that point.
Event links can carry an invite token: https://pinfoapp.com/event/<event_id>?t=<token>.
Opening the link never validates or consumes the token on the website - that
happens only inside the app via an authenticated call, so that a chat app's
link-preview bot (which fetches the URL to build its card) can't burn the
invite before the person taps it. event/index.html/404.html:
?t= is absent — no
buttons, unchanged from before this feature.?t= is present, show two buttons: "Get Pinfo" (App Store) and
"I have Pinfo - open my invite" (pinfo://event/<event_id>?t=<token>, the
app's custom scheme — required because a pinfoapp.com link tapped from a
page already on pinfoapp.com stays in Safari; Universal Links only fire
coming from another app).index.html's <head> carries a meta description, canonical URL, Open Graph
and Twitter Card tags, and SoftwareApplication JSON-LD, so links shared in
WhatsApp/iMessage/Slack render a title, description, and image instead of a
bare URL.aggregateRating to the JSON-LD until there is a real App Store
rating to show — fabricated review markup risks a search-quality penalty.<title>/<h1>/meta description should track the App Store
listing's positioning (discovery/nightlife, not "event planning" — see the
iOS repo's ASO playbook) so the site and the App Store target the same terms.Event links of the form https://pinfoapp.com/event/<uuid> are meant to open the Pinfo iOS app directly instead of Safari.
.well-known/apple-app-site-association and apple-app-site-association (root copy, for pre-iOS 9.3.2 compatibility) declare the association with app ID C2M4B3336A.Pinfo.PinfoApp for the /event/* path..nojekyll is required so GitHub Pages serves the .well-known/ directory (Jekyll hides dot-directories by default).application/octet-stream, not application/json. This is expected and does not need to change — iOS 9.3.1+ does not require the application/json content type. _headers forces application/json for both AASA paths on Cloudflare Pages instead, once/if that's live — see "Two hosting setups"./event/<uuid> cannot resolve to a static per-path file. event/index.html serves the exact /event URL; individual event links (/event/<uuid>) fall through to 404.html, which reads the event id from the path, fetches the event from Supabase for a rich preview (title/date/cover image), and offers to open the app (pinfo://event/<uuid>) or the App Store. GitHub Pages returns these with an HTTP 404 status even though the page renders correctly — some link-preview crawlers may reject that status, which is a known limitation of this hosting setup, not a bug in the page itself.curl -I https://pinfoapp.com/.well-known/apple-app-site-association
Should return 200 with a Content-Type of application/octet-stream.
pinfoapp.com (apex)A records for pinfoapp.com pointing to
185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153The code side of this migration is done and merged (functions/event/[id].js,
_headers, _routes.json). What's left needs the Cloudflare account and the
domain registrar, which no coding session can do:
PinfoApp/pinfoapp.github.io), branch master. Build
command: none (static site). Build output directory: / (repo root —
Cloudflare auto-detects functions/).pinfoapp.com's nameservers to Cloudflare, then add pinfoapp.com
as the Pages project's custom domain (the Cloudflare dashboard walks
through both together).curl -I https://pinfoapp.com/event/<a real public event uuid> → 200
(not 404), and curl -s on the same URL shows the real event title
and image in the raw og: tags.200 with the generic card
and no leaked details.Content-Type: application/json.apps.apple.com from any
sandbox used so far): confirm https://apps.apple.com/app/id6463236759
still resolves to the real Pinfo App Store listing. It's referenced
throughout this repo (event/index.html, 404.html, index.html,
the Cloudflare Function's fallback card) as the canonical download link.