Skip to content

Auth Namespace

The auth namespace provides authentication providers for popular auth libraries and services.

ts
import { auth } from "nevr-env/plugins";

Providers

ProviderDescription
auth.betterAuth()Better-Auth - Full-featured TypeScript auth library
auth.clerk()Clerk - Drop-in authentication UI
auth.auth0()Auth0 - Enterprise identity platform
auth.nextauth()NextAuth.js / Auth.js - Authentication for Next.js

Better-Auth

Full-featured TypeScript authentication library with OAuth, email/password, magic links, and 2FA.

Basic Usage

ts
import { createEnv } from "nevr-env";
import { auth } from "nevr-env/plugins";

const env = createEnv({
  plugins: [auth.betterAuth()],
  runtimeEnv: process.env,
});

// env.BETTER_AUTH_SECRET
// env.BETTER_AUTH_URL
// env.BETTER_AUTH_TRUSTED_ORIGINS (optional)

Options

OptionTypeDefaultDescription
providersOAuthProvider[][]OAuth providers to include
emailPasswordbooleanfalseInclude email/password authentication
magicLinkbooleanfalseInclude magic link configuration
twoFactorbooleanfalseInclude 2FA (TOTP) configuration
sessionbooleanfalseInclude session configuration
rateLimitbooleanfalseInclude rate limiting configuration
variableNamesobject-Custom variable names
extendobject-Extend schema with custom fields

Available OAuth Providers

ts
type OAuthProvider =
  | "google" | "github" | "discord" | "twitter" | "facebook"
  | "apple" | "microsoft" | "linkedin" | "spotify" | "twitch"
  | "slack" | "gitlab" | "bitbucket" | "dropbox" | "notion";

Environment Variables by Option

Default (no options)

VariableRequiredDescription
BETTER_AUTH_SECRETSecret key for signing tokens (min 32 chars)
BETTER_AUTH_URLBase URL of your application
BETTER_AUTH_TRUSTED_ORIGINSComma-separated list of trusted origins

providers: ["google", "github"]

VariableRequiredDescription
GOOGLE_CLIENT_IDGoogle OAuth client ID
GOOGLE_CLIENT_SECRETGoogle OAuth client secret
GITHUB_CLIENT_IDGitHub OAuth client ID
GITHUB_CLIENT_SECRETGitHub OAuth client secret

emailPassword: true

VariableRequiredDefaultDescription
BETTER_AUTH_EMAIL_VERIFICATION"true"Require email verification
BETTER_AUTH_PASSWORD_MIN_LENGTH8Minimum password length
VariableRequiredDefaultDescription
BETTER_AUTH_MAGIC_LINK_EXPIRY300Magic link expiry in seconds

twoFactor: true

VariableRequiredDescription
BETTER_AUTH_2FA_ISSUERTOTP issuer name for authenticator apps

session: true

VariableRequiredDefaultDescription
BETTER_AUTH_SESSION_EXPIRY604800Session expiry in seconds (7 days)
BETTER_AUTH_SESSION_UPDATE_AGE86400Session update frequency (1 day)

rateLimit: true

VariableRequiredDefaultDescription
BETTER_AUTH_RATE_LIMIT_WINDOW60Rate limit window in seconds
BETTER_AUTH_RATE_LIMIT_MAX100Maximum requests per window

Examples

ts
// Full-featured setup
auth.betterAuth({
  providers: ["google", "github", "discord"],
  emailPassword: true,
  magicLink: true,
  twoFactor: true,
  session: true,
  rateLimit: true,
})

// Custom variable names
auth.betterAuth({
  variableNames: {
    secret: "AUTH_SECRET",
    url: "APP_URL",
  }
})

Clerk

Drop-in authentication UI with built-in user management.

Basic Usage

ts
const env = createEnv({
  plugins: [auth.clerk()],
  runtimeEnv: process.env,
});

// env.CLERK_PUBLISHABLE_KEY
// env.CLERK_SECRET_KEY

Options

OptionTypeDefaultDescription
jwtKeybooleanfalseInclude JWT verification key
webhookbooleanfalseInclude webhook secret
urlsbooleanfalseInclude sign-in/sign-up URLs
organizationbooleanfalseInclude organization settings
allowDevelopmentbooleantrue in devAllow test keys in production
variableNamesobject-Custom variable names
extendobject-Extend schema with custom fields

Environment Variables by Option

Default (no options)

VariableRequiredFormatDescription
CLERK_PUBLISHABLE_KEYpk_test_* or pk_live_*Publishable key for client-side
CLERK_SECRET_KEYsk_test_* or sk_live_*Secret key for server-side

jwtKey: true

VariableRequiredDescription
CLERK_JWT_KEYPEM-encoded public key for JWT verification

webhook: true

VariableRequiredFormatDescription
CLERK_WEBHOOK_SECRETwhsec_*Webhook signing secret

urls: true

VariableRequiredDefaultDescription
CLERK_SIGN_IN_URL/sign-inSign-in page URL
CLERK_SIGN_UP_URL/sign-upSign-up page URL
CLERK_AFTER_SIGN_IN_URL/Redirect after sign-in
CLERK_AFTER_SIGN_UP_URL/Redirect after sign-up

organization: true

VariableRequiredDescription
CLERK_ORGANIZATION_IDDefault organization ID
CLERK_ORGANIZATION_SLUGDefault organization slug

Examples

ts
// With webhooks and URLs
auth.clerk({
  webhook: true,
  urls: true,
  organization: true,
})

// Production-only keys
auth.clerk({
  allowDevelopment: false,
})

Auth0

Enterprise identity platform with social login and SSO.

Basic Usage

ts
const env = createEnv({
  plugins: [auth.auth0()],
  runtimeEnv: process.env,
});

// env.AUTH0_DOMAIN
// env.AUTH0_CLIENT_ID
// env.AUTH0_CLIENT_SECRET
// env.AUTH0_BASE_URL

Options

OptionTypeDefaultDescription
apibooleanfalseInclude API audience configuration
m2mbooleanfalseInclude M2M client credentials
managementbooleanfalseInclude Management API credentials
variableNamesobject-Custom variable names
extendobject-Extend schema with custom fields

Environment Variables by Option

Default (no options)

VariableRequiredFormatDescription
AUTH0_DOMAIN*.auth0.comAuth0 tenant domain
AUTH0_CLIENT_ID-Application client ID
AUTH0_CLIENT_SECRET-Application client secret
AUTH0_BASE_URLURLYour application base URL
AUTH0_ISSUER_BASE_URLURLAuth0 issuer URL

api: true

VariableRequiredDefaultDescription
AUTH0_AUDIENCE-API identifier/audience URL
AUTH0_SCOPEopenid profile emailOAuth scopes

m2m: true

VariableRequiredDescription
AUTH0_M2M_CLIENT_IDM2M application client ID
AUTH0_M2M_CLIENT_SECRETM2M application client secret

management: true

VariableRequiredDescription
AUTH0_MGMT_CLIENT_IDManagement API client ID
AUTH0_MGMT_CLIENT_SECRETManagement API client secret

Examples

ts
// Full setup with API and Management
auth.auth0({
  api: true,
  management: true,
})

// M2M communication
auth.auth0({
  m2m: true,
})

NextAuth.js

Authentication for Next.js applications (Auth.js).

Basic Usage

ts
const env = createEnv({
  plugins: [auth.nextauth()],
  runtimeEnv: process.env,
});

// env.NEXTAUTH_SECRET
// env.NEXTAUTH_URL (optional)

Options

OptionTypeDefaultDescription
providersOAuthProvider[][]OAuth providers to include
databasebooleanfalseInclude database adapter config
emailbooleanfalseInclude email provider config
debugbooleanfalseInclude debug mode
variableNamesobject-Custom variable names
extendobject-Extend schema with custom fields

Environment Variables by Option

Default (no options)

VariableRequiredDescription
NEXTAUTH_SECRETSecret for token encryption (min 32 chars)
NEXTAUTH_URLCanonical URL (required in production)

providers: ["google", "github"]

VariableRequiredDescription
GOOGLE_CLIENT_IDGoogle OAuth client ID
GOOGLE_CLIENT_SECRETGoogle OAuth client secret
GITHUB_CLIENT_IDGitHub OAuth client ID
GITHUB_CLIENT_SECRETGitHub OAuth client secret

database: true

VariableRequiredDescription
DATABASE_URLDatabase connection URL for adapter

email: true

VariableRequiredDescription
EMAIL_SERVERSMTP connection string
EMAIL_FROMFrom email address

debug: true

VariableRequiredDefaultDescription
NEXTAUTH_DEBUG"false"Enable debug mode

Examples

ts
// With OAuth providers and database
auth.nextauth({
  providers: ["google", "github"],
  database: true,
})

// With email magic links
auth.nextauth({
  email: true,
})

Released under the MIT License.