Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Upload a photo of a vehicle (or a loose part) and get its year/make/model, visible aftermarket products, and compatible accessories with Amazon affiliate links.
Stack: Next.js (App Router) on Vercel, Supabase (Postgres, storage, Google auth), Google Gemini, GA4.
npm install
cp .env.example .env.local # fill in the values
npm run dev
All environment variables are documented in .env.example. Set the same ones in Vercel.
components/home/hero-dual-entry.tsx uploads to the vehicle_images bucket, POST /api/analyses creates a row, and lib/pipeline.ts runs in the background (waitUntil). /r/[id] polls GET /api/analyses/[id].components/home/vehicle-analyzer.tsx calls POST /api/analyze plus the Server Actions in app/actions.ts.lib/analysis-stages.ts (server-only). Each stage runs a Flash "scout" pass and escalates to the Pro "sniper" model at or below CASCADE_CONFIDENCE_THRESHOLD (lib/gemini.ts). Anything browser-callable must validate image URLs with lib/url-validation.ts first./go (app/go/route.ts), which logs to affiliate_clicks and redirects using lib/affiliate/merchants.ts. Links use target="_blank" rel="nofollow sponsored noopener".lib/amazon/creators-api.ts (server-only) wraps the Amazon Creators API. scripts/amazon-lookup.ts checks ASINs for the research Sheet: npx tsx --env-file=.env.local scripts/amazon-lookup.ts B0B72CHXH3.data/vehicles/ drives /vehicles/* and the sitemap.content/blog/, rendered by app/blog/[slug]/page.tsx.supabase/migrations/ holds the schema and RLS policies (a pg_dump of the public schema), plus the auth.users signup trigger and the vehicle_images bucket. After a schema change, refresh the dump and the generated types:
/opt/homebrew/opt/libpq/bin/pg_dump "postgresql://postgres.jktvsbtgwtzsszebzyay@aws-1-us-east-2.pooler.supabase.com:5432/postgres" --schema-only --schema=public --no-owner --no-privileges -f supabase/migrations/<timestamp>_remote_schema.sql
supabase gen types typescript --project-id jktvsbtgwtzsszebzyay --schema public > types/supabase.ts
pg_dump prompts for the database password (Supabase: Database → Settings). Delete the \restrict and \unrestrict lines it adds (they are psql commands, and supabase db push rejects them). Re-append the convenience types at the bottom of types/supabase.ts after regenerating.
visualfitment-dev (svkwgklyyqmwpcrgdjja) is a separate Supabase project with the same schema and no real data. Cloud sessions use it. To apply new migrations to it:
supabase link --project-ref svkwgklyyqmwpcrgdjja
supabase db push
Check supabase/.temp/project-ref before running db push, so you know which project it targets.
npx tsc --noEmit
npm run lint
npm test
npm run build
The latest audit is in REVIEW.md.