{"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=\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 # 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=\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 # 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=\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 # 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=\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 # 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=\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 # 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 # 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 # 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 # 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 # 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"}}}}