Pry

Site Configuration

Learn how to manage site configuration for your application.

We store the site configuration in src/config/site.ts.

The configuration has the following structure:

src/config/site.ts
export const site = {
    name: '',
    description: '',
    url: process.env.NEXT_PUBLIC_SITE_URL,
    version: process.env.NEXT_PUBLIC_SITE_VERSION,
    logLevel: process.env.NEXT_PUBLIC_LOG_LEVEL,
    auth: {
        key: ''
    },
    mapbox: {
        accessToken: process.env.NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN
    }
}

Environment Variables

Both Next.js have built-in support for loading environment variables from .env into process.env.

Development environment variables:

.env.example
# NextAuth
AUTH_SECRET=
AUTH_DISCORD_ID=
AUTH_DISCORD_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
 
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
NEXT_PUBLIC_SITE_URL=
NEXT_PUBLIC_REDIRECT_URLS=
 
# Site
NEXT_PUBLIC_SITE_URL=
NEXT_PUBLIC_LOG_LEVEL=
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=

Copy the .env.example file:

.env
cp .env.example .env

Loading the environment variables into process.env

.env
# NextAuth
AUTH_SECRET=
AUTH_DISCORD_ID=
AUTH_DISCORD_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
 
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
NEXT_PUBLIC_SITE_URL=
NEXT_PUBLIC_REDIRECT_URLS=
 
# Site

NEXT_PUBLIC_SITE_NAME=My App
NEXT_PUBLIC_SITE_URL=
NEXT_PUBLIC_LOG_LEVEL=
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=
src/config/site.ts
export const site = {

    name: process.env.NEXT_PUBLIC_SITE_NAME,
    description: '',
    url: process.env.NEXT_PUBLIC_SITE_URL,
    version: process.env.NEXT_PUBLIC_SITE_VERSION,
    logLevel: process.env.NEXT_PUBLIC_LOG_LEVEL,
    auth: {
        key: ''
    },
    mapbox: {
        accessToken: process.env.NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN
    }
}

Authentication keys are stored in the auth object. The key property is used to get the session on cookie.

src/config/site.ts
export const site = {
    name: process.env.NEXT_PUBLIC_SITE_NAME,
    description: '',
    url: process.env.NEXT_PUBLIC_SITE_URL,
    version: process.env.NEXT_PUBLIC_SITE_VERSION,
    logLevel: process.env.NEXT_PUBLIC_LOG_LEVEL,
    auth: {

        key: 'session.token'
    },
    mapbox: {
        accessToken: process.env.NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN
    }
}

Generate a secret key for your application. This key is used to encrypt cookies, ensuring the security of user sessions. You can do this by running the following command in your terminal:

command
openssl rand -hex 32
.env

AUTH_SECRET=your-secret-key

On this page