尚未偵測到更新。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'