Open-Source Cold Email & Warmup Platform
Warmbly 是开源的冷邮件平台:温暖您的邮箱、发送活动、并对每条回复进行分流。可在我们的云端运行,也可自行托管整套系统。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证☕ Digital loyalty stamp cards for coffee shops — Apple Wallet & Google Wallet. One poster, one tap, no app.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Digital loyalty stamp cards for coffee shops — delivered to Apple Wallet and Google Wallet.
Live app → perk.junadesign.co.nz · Watch the 50-second teaser查看完整 README ↗Digital loyalty stamp cards for coffee shops — delivered to Apple Wallet and Google Wallet.
Live app → perk.junadesign.co.nz · Watch the 50-second teaser
A shop signs up with a magic link, configures its card (logo, colour, stamps, reward, stamping mode), and gets a URL like perk.junadesign.co.nz/your-shop. Customers open that link, tap once, and the card is in their wallet — no app, no account. Baristas scan the pass to stamp and redeem; passes update live on the customer's phone via APNs and the Google Wallet API. Owners get a dashboard with counters, a customer list with manual adjustments, an activity ledger, and printable counter posters.
Built for a real café in New Zealand — and free for any shop to use. If there's enough interest it stays free and keeps growing.
| Customer landing | Web card | Staff scanner |
|---|---|---|
| Marketing site | Owner dashboard | Printable poster |
|---|---|---|
Next.js 16 (App Router) · React 19 · Tailwind 4 · Drizzle ORM + Postgres (Supabase in prod, @electric-sql/pglite in tests) · Auth.js v5 magic links via Resend · passkit-generator + APNs for Apple Wallet · Google Wallet Objects API · Supabase Storage for logos · Vitest · Playwright.
docs/brand/BRAND_IDENTITY.md — palette, type scale, the mark, and the rules that keep Perk out of a shop's own branding. Tokens live in app/globals.css.docs/superpowers/specs/2026-08-31-perk-v1-design.mddocs/superpowers/plans/2026-08-31-perk-v1.mddocs/manual-testing.mdnpm install
cp .env.example .env # fill in DATABASE_URL at minimum
npm run db:migrate # applies drizzle/ migrations
npm run dev # http://localhost:3000
brew install postgresql@17 && brew services start postgresql@17 && createdb perk). For Supabase use the Transaction pooler URL (port 6543); the client already sets prepare: false.AUTH_RESEND_KEY empty and magic links / card-backup links are printed to the dev server console.WALLET_DRY_RUN=1 locally. Apple routes return the unsigned pass.json, Google/APNs calls are logged instead of sent. The web card works fully.SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY and a public bucket named logos.npm test # Vitest — domain, queries, security, wallet builders (in-memory Postgres via pglite)
npm run typecheck # next typegen && tsc
npm run e2e:seed && npm run e2e # Playwright smoke test against the dev server
pass.app.perk.card) and a certificate for it. Export the cert + private key as PEM; download Apple's WWDR G4 intermediate..p8) — used to tell devices a pass changed.APPLE_PASS_CERT_PEM, APPLE_PASS_KEY_PEM, APPLE_WWDR_PEM, APNS_KEY_PEM. Set APPLE_TEAM_ID, APPLE_PASS_TYPE_ID, APNS_KEY_ID, APNS_TEAM_ID.NEXT_PUBLIC_APP_URL must be public HTTPS — passes embed ${APP_URL}/api/wallet/apple as their web service.GOOGLE_WALLET_ISSUER_ID, GOOGLE_WALLET_SA_EMAIL, GOOGLE_WALLET_SA_KEY_PEM (base64 of the key's private_key field).Import the repo, set every variable from .env.example (unset WALLET_DRY_RUN), and point DATABASE_URL at Supabase's transaction pooler. Run migrations against the production database once. Native modules (sharp, @resvg/resvg-js, passkit-generator) are already marked as server externals in next.config.ts.
app/ routes — (marketing), login, onboarding, dashboard/*, [slug]/{card,scan,staff}, api/*
lib/db Drizzle schema, client, queries (every function takes shopId first)
lib/domain card lifecycle: create / stamp / redeem / adjust — transactional, event-sourced
lib/wallet WalletProvider interface; apple.ts (+ apns.ts), google.ts, strip-image.ts
lib/security HMAC scan tokens, staff cookie signing, DB-backed rate limits, short codes
components/ UI primitives, StampGrid, QR, wallet buttons
drizzle/ SQL migrations · tests/ Vitest · e2e/ Playwright