Skip to content

Simplify ticket emails and add Apple/Google Wallet passes#165

Open
denbec wants to merge 4 commits intomainfrom
denbec/simplify-ticket-emails
Open

Simplify ticket emails and add Apple/Google Wallet passes#165
denbec wants to merge 4 commits intomainfrom
denbec/simplify-ticket-emails

Conversation

@denbec
Copy link
Copy Markdown
Collaborator

@denbec denbec commented Apr 14, 2026

Summary

  • Renamed qr-utils.ts to ticket-utils.ts to better reflect its scope (ticket code generation, price formatting, QR buffers)
  • Switched QR code embedding from base64 data URLs (blocked by many email clients) to CID attachments for reliable rendering
  • Removed buildTicketCardHtml/buildTicketListHtml — HTML is now fully managed in CMS email templates
  • Added cid support to the shared email service attachment interface
  • Added Apple Wallet (.pkpass) and Google Wallet (JWT URL) pass generation in a new wallet-pass-generator.ts utility
  • New /ticket-wallet/apple/:ticketCode endpoint for on-demand .pkpass downloads authenticated via profile token
  • Apple pass is attached to the ticket completion email; Google Wallet URL is passed as a template variable
  • Both wallet integrations degrade gracefully when credentials are not configured
  • Added wallet icon, logo, and background image assets

Test plan

  • Verify QR code renders in email clients (Gmail, Apple Mail, Outlook) via CID attachment
  • Test Apple Wallet pass generation with valid certificates (open .pkpass on iOS/Mac)
  • Test Google Wallet URL on Android device once issuer account is approved
  • Confirm emails still send correctly when wallet env vars are not set (graceful degradation)
  • Update CMS ticket_profile_completed template to use new variables (qr_code_cid, apple_wallet_url, google_wallet_url)

🤖 Generated with Claude Code

denbec and others added 3 commits April 13, 2026 11:21
…icket card HTML

The file contained much more than QR utilities. Switched from base64 data URLs
(blocked by many email clients) to CID-attached PNGs for reliable QR rendering.
Removed buildTicketCardHtml/buildTicketListHtml in favor of CMS-managed templates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generates .pkpass (Apple) and signed JWT URL (Google) when an attendee
completes their profile. Apple pass is attached to the email and served
via a new /ticket-wallet/apple endpoint. Google Wallet is a link.
Both degrade gracefully when credentials are not configured.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix asset path resolution to work from both source and dist. Add wallet
background images and icon/logo assets. Include inline Google Wallet
class creation. Use getSetting helper in wallet endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 14, 2026

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

Project Deployment Actions Updated (UTC)
programmierbar-website Ready Ready Preview, Comment Apr 14, 2026 4:31pm

Request Review

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: 3a055f83a3

ℹ️ 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".

The hardcoded /api/directus/ prefix assumed a proxy that doesn't exist.
Use the Directus PUBLIC_URL env var to construct the endpoint URL directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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