-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathenv.mjs
More file actions
49 lines (48 loc) · 1.96 KB
/
Copy pathenv.mjs
File metadata and controls
49 lines (48 loc) · 1.96 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
import { createEnv } from "@t3-oss/env-nextjs"
import { z } from "zod"
export const env = createEnv({
server: {
NEXTAUTH_URL: z.string().url().optional(),
AUTH_SECRET: z.string().min(1),
GOOGLE_CLIENT_ID: z.string().min(1),
GOOGLE_CLIENT_SECRET: z.string().min(1),
DATABASE_URL: z.string().min(1),
RESEND_API_KEY: z.string().min(1),
// Optional: Stripe for form payment collection
STRIPE_API_KEY: z.string().min(1).optional(),
STRIPE_WEBHOOK_SECRET: z.string().min(1).optional(),
// 32-byte hex key for AES-256-GCM encryption.
// Generate with: openssl rand -hex 32
ENCRYPTION_KEY: z.string().length(64),
// S3-compatible storage (Cloudflare R2, MinIO, AWS S3)
R2_ACCOUNT_ID: z.string().min(1),
R2_ACCESS_KEY_ID: z.string().min(1),
R2_SECRET_ACCESS_KEY: z.string().min(1),
R2_BUCKET_NAME: z.string().min(1),
R2_PUBLIC_URL: z.string().url(),
CRON_SECRET: z.string().min(1).optional(),
},
client: {
NEXT_PUBLIC_APP_URL: z.string().min(1),
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: z.string().min(1).optional(),
},
runtimeEnv: {
NEXTAUTH_URL: process.env.NEXTAUTH_URL,
AUTH_SECRET: process.env.AUTH_SECRET,
GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
DATABASE_URL: process.env.DATABASE_URL,
RESEND_API_KEY: process.env.RESEND_API_KEY,
NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
STRIPE_API_KEY: process.env.STRIPE_API_KEY,
STRIPE_WEBHOOK_SECRET: process.env.STRIPE_WEBHOOK_SECRET,
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,
ENCRYPTION_KEY: process.env.ENCRYPTION_KEY,
R2_ACCOUNT_ID: process.env.R2_ACCOUNT_ID,
R2_ACCESS_KEY_ID: process.env.R2_ACCESS_KEY_ID,
R2_SECRET_ACCESS_KEY: process.env.R2_SECRET_ACCESS_KEY,
R2_BUCKET_NAME: process.env.R2_BUCKET_NAME,
R2_PUBLIC_URL: process.env.R2_PUBLIC_URL,
CRON_SECRET: process.env.CRON_SECRET,
},
})