Nviron
Examples

Next.js Example

Complete Next.js setup with server and client environment variables

Next.js App Router

Complete Next.js setup with server and client environment variables.

import { defineEnv, z } from 'nviron';

export const env = defineEnv({
  // Server-side only
  NODE_ENV: z.enum(['development', 'production', 'test']),
  DATABASE_URL: z.string().url().startsWith('postgresql://'),
  DATABASE_POOL_SIZE: z.coerce.number().int().min(1).max(100).default(10),
  REDIS_URL: z.string().url().optional(),
  
  // Authentication
  NEXTAUTH_SECRET: z.string().min(32),
  NEXTAUTH_URL: z.string().url(),
  
  // External APIs (server-side)
  OPENAI_API_KEY: z.string().min(20),
  STRIPE_SECRET_KEY: z.string().startsWith('sk_'),
  
  // Email
  SMTP_HOST: z.string(),
  SMTP_PORT: z.coerce.number().int(),
  SMTP_USER: z.string().email(),
  SMTP_PASSWORD: z.string().min(8),
  
  // Client-side (NEXT_PUBLIC_ prefix)
  NEXT_PUBLIC_APP_URL: z.string().url(),
  NEXT_PUBLIC_API_URL: z.string().url(),
  NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: z.string().startsWith('pk_'),
  NEXT_PUBLIC_ANALYTICS_ID: z.string().optional(),
});
// Validate environment variables at build time
import './src/env.ts';

/** @type {import('next').NextConfig} */
const nextConfig = {
  // Your Next.js config here
};

export default nextConfig;
# Node Environment
NODE_ENV=development

# Database
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
DATABASE_POOL_SIZE=10
REDIS_URL=redis://localhost:6379

# Authentication
NEXTAUTH_SECRET=your-nextauth-secret-min-32-chars
NEXTAUTH_URL=http://localhost:3000

# External APIs
OPENAI_API_KEY=sk-your-openai-api-key
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key

# Email
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password

# Public (Client-side)
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_API_URL=http://localhost:3000/api
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_public_key
NEXT_PUBLIC_ANALYTICS_ID=G-XXXXXXXXXX

On this page