Cardap.io
테이블에서 바로 주문하는 디지털 메뉴판
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Know your number before you make the offer. Screenshot any Facebook Marketplace listing or Copart lot — Lowballer pulls live comps, prices the repairs, and hands you the exact lowball offer or max bid to make.
Three modes: Car (market value − repairs = your offer) · Any item (eBay sold comps → flip profit) · Copart/Salvage (rebuild cost → your max bid).
npm install
cp .env.example .env.local
ANTHROPIC_API_KEY — from https://console.anthropic.com (powers all appraisals)STRIPE_SECRET_KEY + STRIPE_PRICE_ID — create a recurring $30/month price in https://dashboard.stripe.com, use test keys firstSTRIPE_WEBHOOK_SECRET — see Stripe webhook (dev) belowAPP_SECRET — any long random string (openssl rand -hex 32)DATABASE_URL — a Postgres connection string (Neon, Railway, or Vercel Postgres free tiers all work). Also copy it into a plain .env file (Prisma CLI's convention, separate from Next's .env.local) so npx prisma migrate dev works without manually passing it.RESEND_API_KEY + EMAIL_FROM — optional in dev. Without a key, magic-sign-in links print to the server console instead of emailing, so local sign-in still works.npx prisma migrate dev --name init
npm run dev
Open http://localhost:3000. There's no free tier: every non-Pro appraisal runs, shows a short preview, and unlocks for $5 (one-time Stripe Checkout). Pro ($30/mo) gets full results.Subscription status (new subscriptions, cancellations, failed payments) is synced by app/api/stripe/webhook/route.js. To exercise it locally:
stripe listen --forward-to localhost:3000/api/stripe/webhook
This prints a whsec_... value — put it in STRIPE_WEBHOOK_SECRET. Then, in another terminal:
stripe trigger checkout.session.completed
stripe trigger customer.subscription.deleted
In production, add the endpoint in the Stripe dashboard (Developers → Webhooks) pointed at https://<your-domain>/api/stripe/webhook, subscribed to checkout.session.completed, customer.subscription.updated, customer.subscription.deleted, and invoice.payment_failed — then put that endpoint's own signing secret in STRIPE_WEBHOOK_SECRET on the host.
Easiest path is Vercel: push this repo to GitHub, import it at https://vercel.com, add the four env vars (set NEXT_PUBLIC_BASE_URL to your live URL), deploy, then point the lowballer.org domain at it. Switch Stripe to live keys when ready.
This repo ships with a CLAUDE.md so Claude Code understands the architecture immediately.
npm install -g @anthropic-ai/claude-code
cd lowballer
claude
Then just describe what you want: "add a Stripe webhook for cancellations", "add a history page of past appraisals", "make the hero animate on load". Docs: https://docs.claude.com/en/docs/claude-code/overview
app/api/stripe/webhook/route.js)BUILD_SPEC.md Phase 2)/api/appraise to cap your Anthropic API spendlib/rateLimit.js)lib/vehicleAnalysis.js.LINK_SCAN_MODE=all, non-Pro within daily caps): the listing is loaded via ScrapeCreators, then prefilled like a screenshot import. Set SCRAPECREATORS_API_KEY, and LINK_SCAN_MODE / LINK_SCAN_TESTERS to control who sees it — see lib/listingFetch.js.app/api/appraise, which calls Claude (claude-sonnet-4-6) with the web search tool and returns parsed JSON.lib/lockedResults.js) and only a teaser is returned; /api/unlock starts a $5 Stripe Checkout and the webhook / redirect marks the result paid. The paid details never reach the browser before payment.app/api/stripe/webhook/route.js) syncing subscription status onto your account; app/api/checkout/verify is just a fast-path UI nudge, not the real source of truth.