Show HN: Issue Apple and Google wallet passes from Node.js

alexpate1 pts0 comments

GitHub - getpassmint/passmint: Issue Apple Wallet and Google Wallet passes from any edge runtime. Zero Node built-ins, Web Crypto only. · GitHub

/" data-turbo-transient="true" />

Skip to content

Type / to search

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

Uh oh!

There was an error while loading. Please reload this page.

getpassmint

passmint

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>119 Commits<br>119 Commits

.changeset

.changeset

.github

.github

assets

assets

docs

docs

examples/node

examples/node

packages/passmint

packages/passmint

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

SECURITY.md

SECURITY.md

biome.json

biome.json

package.json

package.json

pnpm-lock.yaml

pnpm-lock.yaml

pnpm-workspace.yaml

pnpm-workspace.yaml

tsconfig.base.json

tsconfig.base.json

turbo.json

turbo.json

View all files

Repository files navigation

passmint

Issue Apple Wallet and Google Wallet passes from any edge runtime.

One unified pass schema. Two outputs: a signed .pkpass for iOS and a Google Wallet save-link JWT for Android. Zero node:* imports, Web Crypto only.

const pass = Pass.eventTicket({ /* ... */ }).build()

await pass.sign(apple) // .pkpass bytes<br>await pass.toGoogleSaveLink(google, { origins: [...] }) // pay.google.com URL

Status: pre-1.0 alpha. API may change based on real-world feedback.

👉 Full docs, quickstart, and API reference: packages/passmint/README.md

Why passmint

Edge-native. Runs on Cloudflare Workers, Vercel Edge, Deno, Bun, Supabase Edge, Netlify Edge, and Node 20+ without polyfills.

Web Crypto only. No node-forge, no node:crypto, no Buffer. Just Uint8Array, crypto.subtle, TextEncoder.

One schema, two wallets. A single Pass builds both an Apple .pkpass and a Google save-link JWT.

~21 KB gzipped. Strict TypeScript, Valibot discriminated unions per pass style, typed error hierarchy.

Packages

Package<br>Status<br>Description

passmint<br>pre-alpha<br>Core library. Edge-runtime compatible.

Repository layout

packages/passmint/ the library<br>examples/node/ Node examples for Apple + Google<br>.changeset/ changeset-driven release notes<br>.github/workflows/ CI (lint/type-check/test/bundle-guard/publint/attw/size)<br>+ release workflow (changesets → npm with provenance)

Development

Prerequisites: Node 20+, pnpm 9+, and openssl on PATH (tests shell out to it for round-trip verification).

pnpm install<br>pnpm build # tsdown ESM build<br>pnpm test # vitest (Node pool)<br>pnpm lint # biome<br>pnpm type-check # tsc --noEmit

Package-specific checks

cd packages/passmint

pnpm test:workers # smoke tests inside real workerd via vitest-pool-workers<br>pnpm bundle-guard # fails if dist/ contains any `node:*` import<br>pnpm publint # catches common publish mistakes<br>pnpm attw # @arethetypeswrong/cli, esm-only profile<br>pnpm size # size-limit gate

Releasing

Releases are driven by changesets:

Add a changeset describing your change: pnpm changeset

Push. CI runs all gates.

Once merged to main, the release workflow opens (or updates) a "Version Packages" PR.

Merge that PR and the workflow publishes to npm with provenance via OIDC.

License

MIT

About<br>Issue Apple Wallet and Google Wallet passes from any edge runtime. Zero Node built-ins, Web Crypto only.<br>passmint.com<br>Topics<br>applegoogleiospasskitwallet<br>Resources<br>Readme<br>MIT license<br>Security policy<br>Security policy<br>Activity<br>Custom properties<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

pnpm node passmint google wallet edge

Related Articles