# Passlet > One API for Apple Wallet and Google Wallet passes. Define a pass once and get .pkpass for Apple, JWT for Google. Passlet is a TypeScript library (`npm install passlet`) for Node.js servers. Define a pass template once with `new Wallet()` and `wallet.loyalty()` / `eventTicket()` / `boardingPass()` / `coupon()` / `giftCard()` / `generic()`, then call `create()` per recipient to get signed `.pkpass` bytes for Apple and a save JWT for Google. - Run it on the server only; signing credentials must never reach the client. - Failures throw `WalletError`; branch on its `code`, never on message text. ## Docs - [Full documentation](https://passlet.oscartrev.io/llms-full.txt): README, the examples guide, and every example's source in one markdown file - [README](https://github.com/oscartrevio/passlet/blob/main/README.md): what passlet is, install, and a quick start - [Wiki](https://github.com/oscartrevio/passlet/wiki): every guide (credentials, pass types, fields, serving, updates, multiple passes, deploying) and the error catalog - [Agent skill](https://passlet.oscartrev.io/skill.md): concise usage rules for coding agents; install it as a SKILL.md ## Examples - [Examples guide](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/README.md): HTTP headers, environment variables, and common pitfalls - [express/.env.example](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/express/.env.example) - [express/src/server.ts](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/express/src/server.ts) - [hono/.env.example](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/hono/.env.example) - [hono/src/server.ts](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/hono/src/server.ts) - [nextjs/.env.example](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/nextjs/.env.example) - [nextjs/app/api/passes/\[serial\]/apple/route.ts](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/nextjs/app/api/passes/%5Bserial%5D/apple/route.ts) - [nextjs/app/api/passes/\[serial\]/google/route.ts](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/nextjs/app/api/passes/%5Bserial%5D/google/route.ts) - [nextjs/app/layout.tsx](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/nextjs/app/layout.tsx) - [nextjs/app/page.tsx](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/nextjs/app/page.tsx) - [nextjs/lib/wallet.ts](https://raw.githubusercontent.com/oscartrevio/passlet/main/examples/nextjs/lib/wallet.ts) ## Optional - [Playground](https://passlet.oscartrev.io): design a pass in the browser and add it to Apple or Google Wallet - [Source code](https://github.com/oscartrevio/passlet): library, playground, and examples monorepo - [npm package](https://www.npmjs.com/package/passlet)