refactor(db): replace sqlc with handwritten pgx repos

- Finish Paddle-to-Stripe billing migration; drop paddle/stripe libs
- Renumber migrations; add 00012 memberships+manage_token,
  00013 location_type_capacity
- Add tests: admin, auth, bookings customer service
- Remove graphify-out artifacts and stale env files

Authored By: TDvorak <[email protected]>

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Tomas DvorakandDevin committed 2026-09-17 20:21:34 +02:00
1 parent 2039669e2c
commit f2f7439050
93 files changed
+6987 -69060

No files matched your search

+50 -19
View File
@@ -5,7 +5,7 @@
# - frontend signs users in with Neon Auth
# - backend verifies Neon Auth JWTs
# - backend serves booking + billing APIs
# - Paddle handles SaaS billing + customer portal
# - Stripe handles SaaS billing + customer portal
# ============================================
BOOKRA_APP_ENV=staging
@@ -37,33 +37,47 @@ BOOKRA_DATABASE_DIRECT_URL=postgres://user:[email protected]
# AUTHENTICATION (Required when DEMO_MODE=false)
# --------------------------------------------
# Neon Auth base URL for JWKS verification.
BOOKRA_NEON_AUTH_URL=https://ep-mute-water-alem1v8u.neonauth.c-3.eu-central-1.aws.neon.tech/neondb/auth
# Optional emergency/local fallback for non-Neon JWT verification.
# Leave blank in normal Neon Auth setup.
BOOKRA_NEON_AUTH_URL=https://ep-example.neonauth.region.aws.neon.tech/neondb/auth
# Local JWT fallback secret for the password-auth endpoints (/v1/auth/*).
# Required when DEMO_MODE=false if you use local auth.
BOOKRA_AUTH_JWT_SECRET=
# --------------------------------------------
# INTERNAL SERVICES
# --------------------------------------------
# Job runner key for internal API endpoints (reminders, notifications)
BOOKRA_JOB_RUNNER_KEY=job_runner_secret_123
BOOKRA_JOB_RUNNER_KEY=replace-with-secure-random-key
# --------------------------------------------
# PADDLE BILLING (Required for live checkout/webhooks)
# STRIPE BILLING (Required for live checkout/webhooks)
# --------------------------------------------
# BOOKRA_PADDLE_ENV must be "sandbox" or "live".
# API key: Paddle dashboard -> Developer tools -> Authentication.
# Webhook secret: Paddle dashboard -> Notification settings -> destination secret key.
# Price IDs: Paddle dashboard -> Catalog -> Product price IDs.
BOOKRA_PADDLE_ENV=sandbox
BOOKRA_PADDLE_API_KEY=
BOOKRA_PADDLE_WEBHOOK_SECRET=
BOOKRA_PADDLE_STARTER_CZK_PRICE_ID=
BOOKRA_PADDLE_STARTER_USD_PRICE_ID=
BOOKRA_PADDLE_PRO_CZK_PRICE_ID=
BOOKRA_PADDLE_PRO_USD_PRICE_ID=
BOOKRA_PADDLE_BUSINESS_CZK_PRICE_ID=
BOOKRA_PADDLE_BUSINESS_USD_PRICE_ID=
# Secret API key + webhook signing secret from the Stripe dashboard.
# Price IDs: Stripe dashboard -> Product catalog -> Price IDs.
BOOKRA_STRIPE_API_KEY=sk_test_xxx
BOOKRA_STRIPE_WEBHOOK_SECRET=whsec_xxx
# Monthly subscription price IDs
BOOKRA_STRIPE_STARTER_CZK_MONTHLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_STARTER_USD_MONTHLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_PRO_CZK_MONTHLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_PRO_USD_MONTHLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_BUSINESS_CZK_MONTHLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_BUSINESS_USD_MONTHLY_PRICE_ID=price_xxx
# Yearly subscription price IDs
BOOKRA_STRIPE_STARTER_CZK_YEARLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_STARTER_USD_YEARLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_PRO_CZK_YEARLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_PRO_USD_YEARLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_BUSINESS_CZK_YEARLY_PRICE_ID=price_xxx
BOOKRA_STRIPE_BUSINESS_USD_YEARLY_PRICE_ID=price_xxx
# SMS usage prices (standard prices — usage is aggregated monthly into invoices)
BOOKRA_STRIPE_SMS_CZK_PRICE_ID=price_xxx
BOOKRA_STRIPE_SMS_USD_PRICE_ID=price_xxx
BOOKRA_STRIPE_SMS_EUR_PRICE_ID=
BOOKRA_STRIPE_SMS_GBP_PRICE_ID=
BOOKRA_STRIPE_SMS_PLN_PRICE_ID=
# --------------------------------------------
# EMAIL (Optional)
@@ -75,8 +89,25 @@ BOOKRA_SMTP_PORT=587
BOOKRA_SMTP_USERNAME=
BOOKRA_SMTP_PASSWORD=
# --------------------------------------------
# SMS Manager.cz (Optional — SMS add-on)
# --------------------------------------------
BOOKRA_SMSMANAGER_API_KEY=
BOOKRA_SMSMANAGER_BASE_URL=https://api.smsmngr.com/v2
# --------------------------------------------
# ANALYTICS (Optional)
# --------------------------------------------
BOOKRA_UMAMI_API_URL=
BOOKRA_UMAMI_API_KEY=
# --------------------------------------------
# MONITORING (Optional)
# --------------------------------------------
BOOKRA_SENTRY_DSN=
# --------------------------------------------
# ADMIN (Optional — platform admin API)
# --------------------------------------------
BOOKRA_ADMIN_EMAIL=
BOOKRA_ADMIN_KEY=