尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Scan a barcode → find out if the product is bioengineered (BE), likely contains BE-derived ingredients, or is verified non-GMO. Built as an MVP: Next.js 14 (App Router) + Supabase + Vercel, same stack pattern as TaxSnap.
/ (app/page.tsx) — camera barcode scanner (via @zxing/browser) with a
manual-entry fallback./api/lookup — server route that takes a barcode, looks the product up
on Open Food Facts (free, no API key needed),
and runs it through the BE detection logic.lib/beCheck.ts — the actual classification logic. Checks in order:
supabase/schema.sql — tables for profiles, scans, goals, and
receipts (the last one is scaffolded for Phase 2 receipt OCR), all with
row-level security so users only see their own data. delete_policy.sql
adds the scans DELETE policy alongside it.Create a free project at supabase.com — the free tier is enough for this app.
Open SQL Editor → New query, paste in supabase/schema.sql, and run it.
Then run supabase/delete_policy.sql the same way — without that second one
the Delete button on the history page silently does nothing, because RLS
blocks deletes when no matching policy exists. Running it is harmless even if
your copy of schema.sql already creates that policy.
Open Project Settings → API and copy two values:
NEXT_PUBLIC_SUPABASE_URLanon public key → NEXT_PUBLIC_SUPABASE_ANON_KEYThe anon key is safe to expose in the browser — RLS is what protects the
data. Never put the service_role key in this app.
cp .env.example .env.local
# paste your Supabase URL + anon key into .env.local
npm install
npm run dev
Both NEXT_PUBLIC_* vars must be set before npm run build too — the Supabase
client is created at module scope, so a build without them fails at prerender
with supabaseUrl is required.
NEXT_PUBLIC_SUPABASE_URL and
NEXT_PUBLIC_SUPABASE_ANON_KEY (and USDA_FDC_API_KEY if you have one) for
all environments, then deploy.https://gmo-scan.vercel.app.Back in Supabase, Authentication → URL Configuration:
https://your-app.vercel.app/** and, for local work,
http://localhost:3000/**Until this is set, email confirmation links and the Google button send people
back to localhost instead of the live site.
"Continue with Google" needs one extra step. It stays broken until you enable the Google provider under Authentication → Providers and paste in a client ID and secret from a Google Cloud OAuth consent screen. Email + password sign-in works with no extra setup, so you can ship without Google and add it later.
The camera scanner only runs over HTTPS (or localhost) — that is a browser
rule, not an app setting. Vercel is HTTPS by default, so it works once deployed.
The same code also builds as an iPhone and Android app, on GitHub with no Mac needed. See docs/phone-apps.md for how it works and the one-time Apple / GitHub setup.
lib/beCheck.ts are a starting point,
not exhaustive. Cross-check against the live USDA BE List
periodically — it gets updated as new BE crops are approved.receipts table and Storage bucket
convention are scaffolded but no upload UI or OCR pipeline is wired in.goals table exists;
the recommendation engine and goal-tracking screens aren't built.public/ so it installs as a PWAgoals table)scans with source: 'receipt_ocr'