| # Copy this file to .env for local dev, or add each variable as a Secret in | |
| # your Hugging Face Space settings for deployment. Never commit a real .env. | |
| # | |
| # The app boots and runs in DEMO MODE (in-memory storage, mock AI provider) | |
| # if these are left unset, so you can try it out before wiring real services. | |
| # --- Supabase (Postgres + Auth) ---------------------------------------------- | |
| # Create a free project at https://supabase.com (choose an EU region, e.g. | |
| # Frankfurt, for GDPR data residency). Then: | |
| # SUPABASE_URL / SUPABASE_ANON_KEY: Project Settings > API | |
| # SUPABASE_SERVICE_ROLE_KEY: Project Settings > API (keep this SECRET - | |
| # it bypasses Row Level Security; only the backend should ever see it) | |
| SUPABASE_URL= | |
| SUPABASE_ANON_KEY= | |
| SUPABASE_SERVICE_ROLE_KEY= | |
| # --- LLM providers ------------------------------------------------------------ | |
| # Groq: free tier, get a key at https://console.groq.com/keys | |
| GROQ_API_KEY= | |
| # Gemini: free tier, get a key at https://aistudio.google.com/app/apikey | |
| GEMINI_API_KEY= | |
| # --- Stripe ------------------------------------------------------------------- | |
| # https://dashboard.stripe.com/apikeys (use test mode keys first: sk_test_...) | |
| STRIPE_SECRET_KEY= | |
| # https://dashboard.stripe.com/webhooks - create an endpoint pointing at | |
| # https://<your-space>.hf.space/billing/webhook, then copy its signing secret | |
| STRIPE_WEBHOOK_SECRET= | |
| # Create one recurring Price per paid tier at https://dashboard.stripe.com/products | |
| # and paste each Price ID (looks like price_...) below: | |
| STRIPE_PRICE_STARTER= | |
| STRIPE_PRICE_PRO= | |
| STRIPE_PRICE_BUSINESS= | |
| # --- Resend (transactional email) - optional for v1 -------------------------- | |
| # https://resend.com free tier | |
| RESEND_API_KEY= | |
| # --- Pricing overrides (optional) --------------------------------------------- | |
| # Lets you change prices without a redeploy. Leave unset to use the defaults | |
| # baked into app/config.py (149 / 349 / 799 CZK). | |
| PRICE_STARTER_CZK= | |
| PRICE_PRO_CZK= | |
| PRICE_BUSINESS_CZK= | |
| PRICE_FREE_GENERATIONS= | |
| PRICE_STARTER_GENERATIONS= | |
| # --- Misc ---------------------------------------------------------------------- | |
| # Public base URL of your deployed app, used to build Stripe redirect URLs. | |
| # e.g. https://your-username-etsy-listing-optimizer.hf.space | |
| APP_BASE_URL= | |
| # Anti-abuse rate limits (requests per minute); defaults shown are sane for v1. | |
| GENERATE_RATE_LIMIT_PER_MINUTE=6 | |
| AUTH_RATE_LIMIT_PER_MINUTE=10 | |