Replace manual "type the number and order ID" flow with: - Client-side QR code (qrcode npm package) for desktop users - Pre-filled Swish payment URL (app.swish.nu) for mobile users - Manual number fallback + "Jag har betalat" confirmation The Swish C2B URL scheme pre-fills amount and message (order ID) without requiring any Swish Commerce API certificate or bank agreement. Supports both personal phone numbers (070...) and Swish Företag business numbers (123...) via number normalization in buildSwishPaymentUrl(). Set SWISH_NUMBER in .env to a Företags number once set up.
58 lines
2.3 KiB
Text
58 lines
2.3 KiB
Text
# BilHej Environment Variables
|
|
# Copy this file to .env and fill in your keys.
|
|
#
|
|
# cp .env.example .env
|
|
#
|
|
# Docker Compose reads .env from the project root automatically.
|
|
|
|
# ---------- PostgreSQL ----------
|
|
POSTGRES_DB=bilhej
|
|
POSTGRES_USER=bilhej
|
|
POSTGRES_PASSWORD=change_me
|
|
|
|
# ---------- JWT ----------
|
|
# Generate a secure random secret:
|
|
# openssl rand -hex 32
|
|
JWT_SECRET=change_me_to_a_random_64_char_string
|
|
|
|
# ---------- Stripe (Phase 1) ----------
|
|
# Test keys from Stripe Dashboard: https://dashboard.stripe.com/test/apikeys
|
|
STRIPE_SECRET_KEY=sk_test_...
|
|
# Webhook secret from stripe CLI: stripe listen --print-secret
|
|
STRIPE_WEBHOOK_SECRET=whsec_...
|
|
# Price ID from Stripe Dashboard: https://dashboard.stripe.com/test/products
|
|
STRIPE_PRICE_ID=price_...
|
|
|
|
# ---------- Swish (Phase 0) ----------
|
|
# The Swish number customers pay to. Two formats accepted:
|
|
# - Swedish phone number: 0701234567 (normalised to 46… for the payment URL)
|
|
# - Swish Business number: 1234567890 (starts with 123, used as-is)
|
|
# A Swish Business number (123…) is recommended — get one from your bank
|
|
# via a "Swish Företag" agreement. No Swish Commerce API certificate needed;
|
|
# the frontend generates a pre-filled QR code + payment link automatically.
|
|
SWISH_NUMBER=0701234567
|
|
|
|
# ---------- App URL (password reset links in email) ----------
|
|
APP_PUBLIC_BASE_URL=http://localhost:3000
|
|
|
|
# ---------- SMTP (local Docker uses Mailpit via docker-compose.yml) ----------
|
|
# docker compose up → view mail at http://localhost:8025
|
|
# Leave MAIL_HOST unset in .env to use compose defaults (mailpit).
|
|
# Production (Resend SMTP) — see docs/production-email-checklist.md
|
|
# MAIL_HOST=smtp.resend.com
|
|
# MAIL_PORT=587
|
|
# MAIL_USERNAME=resend
|
|
# MAIL_PASSWORD=re_... # API key; never commit a real value
|
|
# MAIL_FROM=noreply@bilhej.se
|
|
|
|
# ---------- Production admin (prod profile only) ----------
|
|
# Strong password; never use test1234. Dev seeds use test@bilhej.se instead.
|
|
ADMIN_EMAIL=admin@bilhej.se
|
|
ADMIN_PASSWORD=change_me_to_a_strong_password
|
|
|
|
# ---------- Umami analytics (production frontend build only) ----------
|
|
# Baked into the frontend image at build time. Leave unset for local dev / docker compose up.
|
|
# Website ID from https://analytics.bilhej.se → Settings → Websites → BilHej
|
|
# See docs/umami-analytics.md
|
|
# VITE_UMAMI_WEBSITE_ID=
|
|
# VITE_UMAMI_SCRIPT_URL=https://analytics.bilhej.se/script.js
|