GitHub/Google buttons on the login page pointed at providers that may not be configured in Supabase, dead-ending in an error. Add NEXT_PUBLIC_OAUTH_GITHUB / NEXT_PUBLIC_OAUTH_GOOGLE (opt-in, "true" to show); a provider button renders only when enabled and the whole social block is hidden when neither is. Pure resolveOAuthProviders helper is unit-tested; flags documented in .env.example and DEPLOYMENT.md.
47 lines
2.2 KiB
Bash
47 lines
2.2 KiB
Bash
# -----------------------------------------------------------------------------
|
|
# hackerspace-management environment variables
|
|
# -----------------------------------------------------------------------------
|
|
# Copy to .env.local for development; set the same keys on your host for prod.
|
|
# .env.local is git-ignored. Never commit real secrets.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Supabase (required)
|
|
NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...replace-with-anon-key
|
|
|
|
# Server-side admin key. Bypasses RLS. Required for createSpace / joinSpace.
|
|
# Treat as a secret. Never expose to the browser. Never log it.
|
|
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOi...replace-with-service-role-key
|
|
|
|
# App URL (required)
|
|
# Public-facing base URL of this deployment. Used in OAuth redirects.
|
|
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
|
|
# Secrets vault encryption key (required for the /ops Secrets feature).
|
|
# 32 bytes of cryptographically random data, hex-encoded (64 hex chars).
|
|
# Generate with: openssl rand -hex 32
|
|
# Without this set, the secrets feature falls back to legacy plain-text storage.
|
|
# Rotating this key invalidates all existing ciphertexts; re-enter each secret.
|
|
SECRETS_ENCRYPTION_KEY=
|
|
|
|
# OAuth provider buttons on the login page (optional).
|
|
# Set to "true" only for a provider you have actually configured in Supabase
|
|
# Auth. Unset/anything-else hides that button (an unconfigured provider button
|
|
# just dead-ends in a Supabase error). If neither is "true" the whole
|
|
# "OR / social sign-in" block is hidden.
|
|
NEXT_PUBLIC_OAUTH_GITHUB=
|
|
NEXT_PUBLIC_OAUTH_GOOGLE=
|
|
|
|
# Node env (optional, defaults to "development" locally)
|
|
NODE_ENV=development
|
|
|
|
# Docker build flag (only when building the standalone image)
|
|
# Set to "1" in the Dockerfile so next.config.mjs emits standalone output.
|
|
# DOCKER_BUILD=1
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Per-space integration credentials (PayPal, Zeffy, Venmo, Stripe) are stored
|
|
# in the database under the `integrations` table, not in env. The
|
|
# /api/paypal/sync endpoint reads them from there.
|
|
# -----------------------------------------------------------------------------
|