Files

1 line
44 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "chakra3301/findersxkeepers", "files": {".env.example": {"d91c6a7894dfcd7001692283d87c624d00669610": {"t": 1785747094.144493, "n": 4436, "h": "2ce0c6cabe724dd1", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel) and email links.\n# Use your canonical public origin — include https:// and www if that is where\n# the site is served (required for link previews on Discord, iMessage, etc.).\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n# Optional stronger model used ONLY to re-price low-confidence items:\n# DEEPSEEK_REASONER_MODEL=deepseek/deepseek-r1 # (OpenRouter) or deepseek-reasoner direct\n#\n# These three are just \"OpenAI-compatible base URL + key + model\", so you can\n# point them at ANY compatible gateway. e.g. opencode Zen:\n# DEEPSEEK_BASE_URL=https://opencode.ai/zen/v1\n# DEEPSEEK_API_KEY=<your opencode key>\n# DEEPSEEK_MODEL=deepseek-v4-flash # or deepseek-v4-pro\n# (or OpenRouter: https://openrouter.ai/api/v1 + a deepseek/* model id)\n#\n# Optional LIVE web grounding via Exa: when set, the estimator pulls recent comps\n# from each category's trusted domains (TCGplayer, Grailed, StockX, Chrono24,\n# DHL/FedEx, …) and DeepSeek reasons over them. Absent → skill-only prompting.\n# Key: https://dashboard.exa.ai. Best-effort — failures fall back silently.\n# EXA_API_KEY=...\n#\n# Safety valve: after this many paid estimate operations per UTC day, serve the\n# free stub instead of calling the model/Exa (guards against spend spikes).\n# Per-process best-effort; default 1000.\n# ESTIMATOR_DAILY_CAP=1000\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "e5ce7511571c562bbd92cdb8d5f83a4762fda897": {"t": 1785770371.3797703, "n": 4436, "h": "2ce0c6cabe724dd1", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel) and email links.\n# Use your canonical public origin — include https:// and www if that is where\n# the site is served (required for link previews on Discord, iMessage, etc.).\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n# Optional stronger model used ONLY to re-price low-confidence items:\n# DEEPSEEK_REASONER_MODEL=deepseek/deepseek-r1 # (OpenRouter) or deepseek-reasoner direct\n#\n# These three are just \"OpenAI-compatible base URL + key + model\", so you can\n# point them at ANY compatible gateway. e.g. opencode Zen:\n# DEEPSEEK_BASE_URL=https://opencode.ai/zen/v1\n# DEEPSEEK_API_KEY=<your opencode key>\n# DEEPSEEK_MODEL=deepseek-v4-flash # or deepseek-v4-pro\n# (or OpenRouter: https://openrouter.ai/api/v1 + a deepseek/* model id)\n#\n# Optional LIVE web grounding via Exa: when set, the estimator pulls recent comps\n# from each category's trusted domains (TCGplayer, Grailed, StockX, Chrono24,\n# DHL/FedEx, …) and DeepSeek reasons over them. Absent → skill-only prompting.\n# Key: https://dashboard.exa.ai. Best-effort — failures fall back silently.\n# EXA_API_KEY=...\n#\n# Safety valve: after this many paid estimate operations per UTC day, serve the\n# free stub instead of calling the model/Exa (guards against spend spikes).\n# Per-process best-effort; default 1000.\n# ESTIMATOR_DAILY_CAP=1000\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "71d9f2329dd213cbc2abe2430a5d65e6864ebc60": {"t": 1785770372.6832824, "n": 4282, "h": "52e72f4935440e62", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n# Optional stronger model used ONLY to re-price low-confidence items:\n# DEEPSEEK_REASONER_MODEL=deepseek/deepseek-r1 # (OpenRouter) or deepseek-reasoner direct\n#\n# These three are just \"OpenAI-compatible base URL + key + model\", so you can\n# point them at ANY compatible gateway. e.g. opencode Zen:\n# DEEPSEEK_BASE_URL=https://opencode.ai/zen/v1\n# DEEPSEEK_API_KEY=<your opencode key>\n# DEEPSEEK_MODEL=deepseek-v4-flash # or deepseek-v4-pro\n# (or OpenRouter: https://openrouter.ai/api/v1 + a deepseek/* model id)\n#\n# Optional LIVE web grounding via Exa: when set, the estimator pulls recent comps\n# from each category's trusted domains (TCGplayer, Grailed, StockX, Chrono24,\n# DHL/FedEx, …) and DeepSeek reasons over them. Absent → skill-only prompting.\n# Key: https://dashboard.exa.ai. Best-effort — failures fall back silently.\n# EXA_API_KEY=...\n#\n# Safety valve: after this many paid estimate operations per UTC day, serve the\n# free stub instead of calling the model/Exa (guards against spend spikes).\n# Per-process best-effort; default 1000.\n# ESTIMATOR_DAILY_CAP=1000\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "02f5e7bc26beb72b0ee1d8b419f260c02307d47e": {"t": 1785770374.285083, "n": 4119, "h": "c59cecfd89210f82", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n#\n# These three are just \"OpenAI-compatible base URL + key + model\", so you can\n# point them at ANY compatible gateway. e.g. opencode Zen:\n# DEEPSEEK_BASE_URL=https://opencode.ai/zen/v1\n# DEEPSEEK_API_KEY=<your opencode key>\n# DEEPSEEK_MODEL=deepseek-v4-flash # or deepseek-v4-pro\n# (or OpenRouter: https://openrouter.ai/api/v1 + a deepseek/* model id)\n#\n# Optional LIVE web grounding via Exa: when set, the estimator pulls recent comps\n# from each category's trusted domains (TCGplayer, Grailed, StockX, Chrono24,\n# DHL/FedEx, …) and DeepSeek reasons over them. Absent → skill-only prompting.\n# Key: https://dashboard.exa.ai. Best-effort — failures fall back silently.\n# EXA_API_KEY=...\n#\n# Safety valve: after this many paid estimate operations per UTC day, serve the\n# free stub instead of calling the model/Exa (guards against spend spikes).\n# Per-process best-effort; default 1000.\n# ESTIMATOR_DAILY_CAP=1000\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "a0c6253bd1e090ffab76ecfcf2bea57401db2135": {"t": 1785770375.9300165, "n": 3893, "h": "56b8cbf990767dc2", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n#\n# These three are just \"OpenAI-compatible base URL + key + model\", so you can\n# point them at ANY compatible gateway. e.g. opencode Zen:\n# DEEPSEEK_BASE_URL=https://opencode.ai/zen/v1\n# DEEPSEEK_API_KEY=<your opencode key>\n# DEEPSEEK_MODEL=deepseek-v4-flash # or deepseek-v4-pro\n# (or OpenRouter: https://openrouter.ai/api/v1 + a deepseek/* model id)\n#\n# Optional LIVE web grounding via Exa: when set, the estimator pulls recent comps\n# from each category's trusted domains (TCGplayer, Grailed, StockX, Chrono24,\n# DHL/FedEx, …) and DeepSeek reasons over them. Absent → skill-only prompting.\n# Key: https://dashboard.exa.ai. Best-effort — failures fall back silently.\n# EXA_API_KEY=...\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "4ca62bb83c4aea0f6fea5f174d1ec6fdb47930c6": {"t": 1785770377.5276582, "n": 3532, "h": "7cda1ab00163a0f4", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n#\n# Optional LIVE web grounding via Exa: when set, the estimator pulls recent comps\n# from each category's trusted domains (TCGplayer, Grailed, StockX, Chrono24,\n# DHL/FedEx, …) and DeepSeek reasons over them. Absent → skill-only prompting.\n# Key: https://dashboard.exa.ai. Best-effort — failures fall back silently.\n# EXA_API_KEY=...\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "b3ea80c33f0f2246b92c6f7ae041412633f3f7d4": {"t": 1785770379.4311144, "n": 3197, "h": "c15b9413aaae85f6", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\n#\n# The DeepSeek path uses a category \"pricing skill\" (src/lib/estimator/pricing-skill.ts):\n# it classifies the item and anchors the estimate on that category's trusted\n# marketplaces — TCGplayer & PriceCharting for cards, Grailed & StockX for\n# fashion/sneakers, Chrono24 for watches, Map Camera for cameras — and\n# DHL/FedEx/EMS for shipping.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "b8b487bf3b1d994118da1b830143949c22ad38f0": {"t": 1785770381.2534683, "n": 2852, "h": "0bc22ae234b79d77", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Login is passwordless: email one-time-code (OTP) for everyone, plus optional\n# social sign-in. The form detects new vs returning emails and shows the right\n# screen. For 6-digit CODES (not magic links), set the Supabase Auth email\n# templates (\"Magic Link\" / \"Confirm signup\") to include {{ .Token }}.\n#\n# Each social button renders only after its provider is configured in Supabase\n# Auth — flip the matching flag below once it's wired up (email OTP always works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n# NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true\n\n# Estimator seam: \"stub\" (default, deterministic — no key needed) or \"deepseek\".\n# Sizes the pre-sourcing SHIPPING estimate and the item-value used for the escrow\n# hold. \"deepseek\" routes those estimates through a DeepSeek model; any failure\n# falls back to the deterministic stub so checkout is never blocked. The four\n# pricing lines stay separate either way — the model only feeds inputs.\nESTIMATOR_PROVIDER=stub\n# DeepSeek (OpenAI-compatible) — required only when ESTIMATOR_PROVIDER=deepseek.\n# Key: https://platform.deepseek.com → API keys. Never commit a real key.\n# DEEPSEEK_API_KEY=sk-...\n# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # default\n# DEEPSEEK_MODEL=deepseek-chat # default\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "21763503f677cf83a905ae753c07d71830ed6fcf": {"t": 1785770382.6570914, "n": 1790, "h": "47a4713deaafacab", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Set to \"true\" only after adding Apple as an OAuth provider in Supabase Auth.\n# Until then the \"Continue with Apple\" button stays hidden (email auth still works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n\n# Email seam: \"stub\" (default, logs to console — no key needed) or \"resend\".\n# \"resend\" requires an API key + a verified From address.\nEMAIL_PROVIDER=stub\n# RESEND_API_KEY=re_...\n# EMAIL_FROM=Finders Keepers <hello@yourdomain.com> # must be a verified Resend sender\n"}, "ccc994800ea5028f738e35cf80083acd8aa2e679": {"t": 1785770383.8609447, "n": 1521, "h": "66bb4431682b55c0", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n\n# Set to \"true\" only after adding Apple as an OAuth provider in Supabase Auth.\n# Until then the \"Continue with Apple\" button stays hidden (email auth still works).\n# NEXT_PUBLIC_APPLE_AUTH_ENABLED=true\n"}, "af0f66d4f1d2c0fc5ebeb8ce390058ce0ca8028b": {"t": 1785770385.3124046, "n": 1318, "h": "8070cd68f41e32d0", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" (default, in-memory) or \"stripe\" (real, test mode).\n# \"stripe\" requires the STRIPE_* keys below + a webhook listener (see docs/stripe-setup.md).\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n"}, "438792be0a62026e78903454b8f544044a37b295": {"t": 1785770386.706946, "n": 1222, "h": "1cc5a5a02cda8ae0", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" now, \"stripe\" when the Stripe integration lands.\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n\n# App base URL for Stripe redirect targets (success/cancel). Dev default below.\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\n"}, "ff13ca5d143066a109c89c5522f919ad01285a7d": {"t": 1785770388.020281, "n": 1098, "h": "16e761a50cecaea5", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" now, \"stripe\" when the Stripe integration lands.\nESCROW_PROVIDER=stub\n\n# Stripe (TEST MODE) — required only when ESCROW_PROVIDER=stripe; ignored for the stub.\n# Test keys: https://dashboard.stripe.com → toggle Test mode → Developers → API keys.\n# Webhook secret: run `stripe listen --forward-to localhost:3000/api/stripe/webhook`.\n# These are test-mode values (no real money); never commit real keys.\n# STRIPE_SECRET_KEY=sk_test_...\n# STRIPE_WEBHOOK_SECRET=whsec_...\n# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # only when client-side payment UI lands\n"}, "f8f114d963c13ca20e200114684eebca9b7ac822": {"t": 1785770389.2877007, "n": 601, "h": "6d5fd71e93a8b4b6", "c": "# ──────────────────────────────────────────────────────────────────────────\n# Finders × Keepers — environment\n# Copy this file to `.env.local` and fill in your Supabase project values.\n# ──────────────────────────────────────────────────────────────────────────\n\n# Supabase → Project Settings → API\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\n\n# Server-only. Bypasses RLS — used for seeding + team lifecycle actions.\n# NEVER expose this to the browser or commit it.\nSUPABASE_SERVICE_ROLE_KEY=\n\n# Escrow provider seam: \"stub\" now, \"stripe\" when Stripe Connect lands.\nESCROW_PROVIDER=stub\n"}}}}