GymCoach
근력 트레이닝 기록 및 개인 AI 코치
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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'