RECIPES·Production Architectures

Examples & tutorials

Four production-shaped integration recipes. Each example demonstrates end-to-end access verification across physical hardware and edge software.

OpenAPI 3.0 SpecLaunch API Playground

Content Paywall (Next.js Edge)

Gate premium routes behind a Day Pass with Edge middleware — zero database queries, sub-15ms checks.

middleware.ts
// Next.js Edge middleware paywall: Day Pass for premium content
import Passyn from "@passyn/node";
import { NextResponse, type NextRequest } from "next/server";
const passyn = new Passyn(process.env.PASSYN_API_KEY!);
export async function middleware(req: NextRequest) {
if (!req.nextUrl.pathname.startsWith("/premium")) return NextResponse.next();
const userId = req.cookies.get("uid")?.value;
if (!userId) return NextResponse.redirect(new URL("/buy-pass", req.url));
const { valid } = await passyn.access.verify({
userId,
passId: process.env.DAY_PASS_ID!,
});
return valid
? NextResponse.next()
: NextResponse.redirect(new URL("/buy-pass", req.url));
}

Gym & Fitness Turnstile

Physical optical turnstile verification with usage decrementing and fail-closed security.

turnstile.ts
// Physical gym turnstile: consume 1 entry per scan, fail closed
import Passyn, { PassynError } from "@passyn/node";
const passyn = new Passyn(process.env.PASSYN_API_KEY!);
export async function onBadgeScan(memberId: string) {
try {
const check = await passyn.access.verify({
userId: memberId,
passId: process.env.GYM_DAY_PASS_ID!,
consume: true, // atomically decrements remaining uses
});
if (check.valid) return openTurnstile();
return displayScreen(check.reason ?? "Pass expired — renew at desk");
} catch (err) {
if (err instanceof PassynError) console.error(err.code, err.message);
return displayScreen("Turnstile offline. Contact staff.");
}
}

Exam & LMS Cram Window

Time-bounded access to high-stakes prep material during exam weeks.

exam-platform.ts
// Exam platform: sell a 72-hour cram session window
const cramPass = await passyn.passes.create({
name: "Finals Cram 72h",
type: "EXAM",
durationHours: 72,
price: 19,
maxUses: null, // unlimited access during the window
isActive: true,
});
// Issue access when payment completes:
const student = await passyn.users.create({ name: "Ada", email: "[email protected]" });
await passyn.access.activate({ userId: student.id, passId: cramPass.id });
// Gate question bank:
const { valid, expiresAt } = await passyn.access.verify({
userId: student.id,
passId: cramPass.id,
});

Meeting Room Smart Lock

Single-use electronic door unlock credentials for coworking desks and pods.

smart-lock.ts
// Coworking conference room: 4-hour single-entry booking
const roomPass = await passyn.passes.create({
name: "Meeting Room 4h",
type: "CUSTOM",
durationHours: 4,
maxUses: 1, // one single door opening
price: 35,
isActive: true,
});
// Smart lock verifies and consumes on badge or QR scan:
const result = await passyn.access.verify({
userId: bookerId,
passId: roomPass.id,
consume: true,
});
if (result.valid) unlockElectronicDoor();