CognxSafeTrack
Claude Sonnet 4.6
feat: Claude Sonnet 4.6 provider + Stripe billing automation
4a0c3ba Download apps/api/src/config.ts from safetrack/edtech: direct link, hf CLI and curl.
- Browser
- Download file 1.33 kB
-
https://huggingface.co/spaces/safetrack/edtech/resolve/main/apps/api/src/config.ts
- Command line
-
hf download hf://spaces/safetrack/edtech/apps/api/src/config.ts
-
curl -L -o config.ts https://huggingface.co/spaces/safetrack/edtech/resolve/main/apps/api/src/config.ts
1.33 kB
| import { z } from 'zod'; | |
| import dotenv from 'dotenv'; | |
| import path from 'path'; | |
| dotenv.config({ path: path.join(__dirname, '../../../../.env') }); | |
| const envSchema = z.object({ | |
| DATABASE_URL: z.string().url(), | |
| REDIS_URL: z.string().url(), | |
| ADMIN_API_KEY: z.string().min(32), | |
| WHATSAPP_ACCESS_TOKEN: z.string().optional(), | |
| WHATSAPP_PHONE_NUMBER_ID: z.string().optional(), | |
| OPENAI_API_KEY: z.string().optional(), | |
| GOOGLE_AI_API_KEY: z.string().optional(), | |
| ANTHROPIC_API_KEY: z.string().optional(), | |
| STRIPE_SECRET_KEY: z.string().optional(), | |
| STRIPE_WEBHOOK_SECRET: z.string().optional(), | |
| R2_ACCOUNT_ID: z.string().optional(), | |
| R2_ACCESS_KEY_ID: z.string().optional(), | |
| R2_SECRET_ACCESS_KEY: z.string().optional(), | |
| R2_BUCKET: z.string().optional(), | |
| PORT: z.string().default('3001').transform(Number), | |
| NODE_ENV: z.enum(['development', 'production', 'test']).default('development'), | |
| ENCRYPTION_SECRET: z.string().min(32, 'ENCRYPTION_SECRET must be at least 32 characters') | |
| }); | |
| const result = envSchema.safeParse(process.env); | |
| if (!result.success) { | |
| console.error('[CONFIG] ❌ Invalid environment variables:', result.error.format()); | |
| throw new Error(`[CONFIG] Missing or invalid environment variables:\n${result.error.message}`); | |
| } | |
| export const config = result.data; | |