new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗NFC Digital Business Cards and Google Review Cards. One Next.js 16 modular monolith (App Router, TypeScript, Tailwind and shadcn/ui) on PostgreSQL via Drizzle, with Better Auth, Resend, Cloudinary, Sentry and Vercel.
| Product | In short |
|---|---|
| Digital Business Card | An NFC card with a permanent URL that opens the customer's Neffi profile. Customers activate it with a package code and manage their profile and Scenes from a phone |
| Google Review Card | An NFC card that opens a business's direct Google review page. Neffi records the sale; the tag is prepared by hand |
Milestone status: docs/roadmap.md.
Start at docs/README.md, the map of which document is authoritative for what.
PRODUCT.md: how Neffi behaves today (engineering summary). The shipped implementation is current truth; Notion holds aligned business context. See the sources of truth.docs/architecture/: system and domain model. docs/database/erd.md is the generated schema reference.docs/specs/: feature contracts. docs/decisions/: long-lived decisions.docs/operations.md: runbooks for migrations, seed, auth, card provisioning, deploys and verification.docs/superpowers/: historical milestone plans and design records (not specifications).src/modules/README.md: domain module map.AGENTS.md: rules for coding agents..nvmrc)packageManager in package.json; corepack enable picks it up)neffi-dev). Never use production credentials locally or in Preview.git clone <repo-url> neffi && cd neffi && pnpm install --frozen-lockfileneffi-dev (AWS Asia Pacific, Singapore). Do not enable Neon Auth.cp .env.example .env.local (copy in cmd.exe), then fill in:
DATABASE_URL: the pooled connection string (connection pooling on; host contains -pooler)DATABASE_URL_UNPOOLED: the direct connection string (connection pooling off)BETTER_AUTH_SECRET: output of openssl rand -base64 32BETTER_AUTH_URL: http://localhost:3000GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET: the development/Preview OAuth web clientRESEND_API_KEY, AUTH_EMAIL_FROM: the development/Preview send-only key and sender (see the auth runbook)SUPPORT_REPLY_TO: valid support reply email; a verified Resend sending domain is required for M9B live two-inbox acceptanceACTIVATION_CODE_SECRET: at least 32 random characters (openssl rand -base64 32); keys the activation-code lookup hashACTIVATION_CODE_ENCRYPTION_KEYS, ACTIVATION_CODE_ENCRYPTION_ACTIVE_KEY_ID: a flat JSON object of key IDs to base64 32-byte keys (each from openssl rand -base64 32), and the ID that encrypts new codes. They are separate from the HMAC secret; see key custodyCARD_URL_ORIGIN: bare origin written onto NFC cards, e.g. http://localhost:3000 (see card provisioning)CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET: the development Cloudinary account (the secret stays server-only)NEXT_PUBLIC_SENTRY_DSN: Sentry stays disabled without itThe app refuses to start with missing or invalid configuration and names the variable without printing its value. The approved development target is Neon project neffi-dev, branch production (Neon's default label; it is a development database, separate from application Production). Verify the project, branch and endpoint before every database-changing command.
| Command | Purpose |
|---|---|
pnpm dev / pnpm build / pnpm start | Development server / production build (needs the server env, never connects to the database) / serve the build |
pnpm lint / pnpm typecheck | ESLint / route types then tsc --noEmit |
pnpm test | Unit tests and database invariants on fresh in-process PGlite databases |
pnpm check:bundle | After build: fail if a server secret value appears in public build output |
pnpm db:generate / db:migrate / db:check | Generate a migration from the schema (no connection) / apply pending migrations (uses DATABASE_URL_UNPOOLED) / check history consistency |
pnpm db:seed | Destructive development-only reset to synthetic fixtures; requires explicit development context |
pnpm db:erd | Regenerate docs/database/erd.md from migrations (no credentials). Never edit that file by hand |
pnpm accounts:set-role <email> <owner|customer> | Guarded operator-only role change with an atomic activity event |
pnpm check:db-concurrency, check:provisioning-concurrency, check:claim-concurrency, check:profile-concurrency, check:orders-concurrency, check:support-concurrency | Two-session race regressions on a disposable loopback PostgreSQL only (never Neon; not run in CI) |
pnpm dev:activation-fixture, pnpm dev:form-submission | Local-only synthetic fixtures for browser acceptance (loopback database only) |
CI (.github/workflows/ci.yml) runs lint, typecheck, tests, db:check, migration drift check, build and check:bundle.
src/app/ routes: (public), (customer)/app, admin, api src/proxy.ts /c/:token availability
src/modules/ domain services (accounts, activation, activity, cards, expenses, forms, inventory, orders, payments, profiles, support)
src/db/ schema, connection, seed, invariant tests drizzle/ reviewed SQL migrations
src/auth/ Better Auth, access checks src/config/ validated environment and isolation
src/integrations/ email (Resend), media (Cloudinary) docs/ documentation (see above)
.env* is ignored except .env.example, which holds names only.src/lib/sentry-scrub.ts).pnpm db:migrate. Applying migrations to a shared database needs a restore point and explicit approval (operations).pnpm dev, then check http://localhost:3000/api/health returns {"status":"ok","db":"ok"}.