-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.example
More file actions
83 lines (74 loc) · 4.33 KB
/
Copy pathenv.example
File metadata and controls
83 lines (74 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# ----------------------------------------------------------------------------
# Celluloid environment variables
# Copy this file to `.env` and fill in real values. Never commit `.env`.
# ----------------------------------------------------------------------------
# --- Database (Neon Postgres) ---
# Pooled connection string (host contains "-pooler"). Used at runtime.
# In local development this should be a Neon DEV BRANCH, never the production
# branch — a stray `prisma migrate` or a test run points at whatever is here.
DATABASE_URL="postgresql://user:password@ep-xxxx-pooler.region.aws.neon.tech/celluloid?sslmode=require"
# Direct connection string (no "-pooler"). Used for migrations only.
# Leave it UNSET if your Neon dashboard only shows one string — migrations then
# fall back to DATABASE_URL. Do not leave the placeholder host in place: an
# unreachable value is worse than an absent one, because the fallback only
# fires when the variable is missing entirely, not when it is set-but-wrong.
# DIRECT_URL="postgresql://user:password@ep-xxxx.region.aws.neon.tech/celluloid?sslmode=require"
# --- Promoting a schema migration to production ---
# Migrations are developed and verified against the dev branch above, then
# applied to production explicitly. Put the PRODUCTION pooled/direct string
# here (never in DATABASE_URL) and run:
#
# npm run db:deploy:prod
#
# That script refuses to run unless PROD_DATABASE_URL is set, and it only ever
# runs `prisma migrate deploy` (forward-only — it never resets or drops).
# Vercel deployments run their own `prisma migrate deploy` at build time for
# the production environment, so this is for applying a migration ahead of, or
# independently of, a deploy.
# PROD_DATABASE_URL="postgresql://user:password@ep-prod-pooler.region.aws.neon.tech/celluloid?sslmode=require"
# --- TMDB (metadata) ---
# The v4 "API Read Access Token" from https://www.themoviedb.org/settings/api
# (the long token beginning with "eyJ..."). Server-side only.
TMDB_ACCESS_TOKEN="eyJ..."
# --- Auth (Better Auth) ---
# A long random secret, at least 32 characters. Startup fails below that.
# Generate with: npx auth@latest secret
BETTER_AUTH_SECRET="replace-with-a-long-random-string"
# The app's base URL. Dev: http://localhost:3000 Prod: https://your-app.vercel.app
BETTER_AUTH_URL="http://localhost:3000"
# Public sign-ups are CLOSED by default. Set to "true" only to bootstrap the owner
# account on first run, then remove it (or leave it unset) to lock the deployment
# down. Existing users can always sign in regardless.
ALLOW_SIGNUPS="true"
# Deprecated (honored for one release): the old flag was DISABLE_SIGNUPS, where
# DISABLE_SIGNUPS="false" meant open. Migrate to ALLOW_SIGNUPS above.
# --- Secrets encryption ---
# Encrypts per-user Anthropic API keys at rest. Generate: openssl rand -base64 32
# REQUIRED in production - it cannot fall back to BETTER_AUTH_SECRET there, and
# must be at least 32 characters (the command above yields 44).
# Only in development/test may it be left unset, where it falls back to
# BETTER_AUTH_SECRET.
ENCRYPTION_KEY="replace-with-a-long-random-string"
# --- AI suggestions (Anthropic / Claude) ---
# Optional deployment-default key, used when a user hasn't added their own in Settings.
# Get one at https://console.anthropic.com/
ANTHROPIC_API_KEY=""
# --- Scheduled metadata sync ---
# Bearer token the daily /api/cron/sync job must present. It guards an endpoint
# that rewrites library metadata, so treat it as key material: a long random
# secret, 32 characters or more. Nothing checks its length the way startup
# checks BETTER_AUTH_SECRET and ENCRYPTION_KEY, so generate it rather than
# inventing one: openssl rand -base64 32
# Leaving it unset disables the scheduled sync: the endpoint refuses every
# request rather than falling back to running unauthenticated, so the only thing
# lost is the nightly refresh. On Vercel, set it on the project and it is sent
# with scheduled invocations automatically.
CRON_SECRET=""
# --- App ---
# Public base URL, used for metadata and the auth client. Match BETTER_AUTH_URL.
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
# --- Import / seeding (only used by `npm run import`, not the running app) ---
# Required: the import script throws if unset.
OWNER_EMAIL="you@example.com"
# Optional: path to the Excel file to import. Defaults to data/watched.xlsx.
IMPORT_FILE="data/watched.xlsx"