# ============================================ # APP ENVIRONMENT # ============================================ NODE_ENV=development PORT=3000 # ============================================ # CORS # ============================================ # Comma-separated list of allowed origins (full scheme + host). Required in # production; a literal "*" will NOT work because credentials are enabled. # Example: https://app.yourdomain.com,https://yourdomain.com CORS_ORIGIN= # Apex domain for wildcard subdomain matching in production (allows https://*.). # Leave blank to disable. Example: yourdomain.com ALLOWED_DOMAIN= FRONTEND_URL=http://localhost:3001 BACKEND_URL=http://localhost:3000 # ============================================ # Encryption # ============================================ ENCRYPTION_KEY= # ============================================ # JWT # ============================================ JWT_SECRET= JWT_REFRESH_SECRET= JWT_EXPIRES_IN=3600s # ============================================ # Cookies # ============================================ COOKIE_SECRET= # ============================================ # GitHub OAuth # ============================================ GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= GITHUB_CALLBACK_URL=http://localhost:3000/api/v1/auth/github/callback # ============================================ # Paystack (NGN subscriptions) # ============================================ PAYSTACK_SECRET_KEY=sk_test_xxxxxxxxxxxxx PAYSTACK_PUBLIC_KEY=pk_test_xxxxxxxxxxxxx # Plan codes from your Paystack dashboard (Subscriptions → Plans) PAYSTACK_INDIE_PLAN_ID=PLN_xxxxxxxxxxxxx PAYSTACK_STARTUP_PLAN_ID=PLN_xxxxxxxxxxxxx # Plan amounts in KOBO (1 NGN = 100 kobo) # Must match the amount set on the Paystack plan above # INDIE = ₦5,000 → 500,000 kobo | STARTUP = ₦10,000 → 1,000,000 kobo PAYSTACK_INDIE_AMOUNT=500000 PAYSTACK_STARTUP_AMOUNT=1000000 # ============================================ # Polar (USD subscriptions) # ============================================ # Access token from Polar dashboard (Settings → Developers → Personal Access Tokens) POLAR_ACCESS_TOKEN= # Webhook secret from Polar dashboard (Settings → Webhooks) POLAR_WEBHOOK_SECRET= # sandbox | production POLAR_SERVER=sandbox # Product UUIDs from your Polar dashboard (Products) POLAR_INDIE_PRODUCT_ID= POLAR_STARTUP_PRODUCT_ID= # ============================================ # Slack # ============================================ SLACK_WEBHOOK_URL= # ============================================ # SENDGRID (Shared platform email — free plan) # ============================================ SENDGRID_API_KEY= SENDGRID_FROM_EMAIL= SENDGRID_FROM_NAME= SENDGRID_WEBHOOK_VERIFICATION_KEY= # ============================================ # RESEND # ============================================ RESEND_API_KEY= RESEND_FROM_EMAIL= # ============================================ # POSTMARK (Shared platform email — free plan) # ============================================ POSTMARK_API_KEY= POSTMARK_FROM_EMAIL= POSTMARK_MESSAGE_STREAM=outbound # ============================================ # DATABASE (PostgreSQL via Prisma) # ============================================ DATABASE_URL=postgresql://notifykit:localdev123@localhost:5432/notifykit?connection_limit=10&pool_timeout=10 # Docker PostgreSQL Configuration (used by docker-compose.yml) POSTGRES_USER=notifykit POSTGRES_PASSWORD=localdev123 POSTGRES_DB=notifykit POSTGRES_PORT=5432 POSTGRES_CONTAINER_NAME=notifykit-postgres # ============================================ # REDIS (Queue & Cache) # ============================================ # For local development with Docker: use localhost as HOST REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= REDIS_DB=0 REDIS_CONTAINER_NAME=notifykit-redis # ============================================ # ADMIN # ============================================ # Admin email for notifications and support ADMIN_EMAIL=