add-setting-env

Adding Environment Variable for User Settings

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "add-setting-env" with this command: npx skills add lobehub/lobehub/lobehub-lobehub-add-setting-env

Adding Environment Variable for User Settings

Add server-side environment variables to configure default values for user settings.

Priority: User Custom > Server Env Var > Hardcoded Default

Steps

  1. Define Environment Variable

Create src/envs/<domain>.ts :

import { createEnv } from '@t3-oss/env-nextjs'; import { z } from 'zod';

export const get<Domain>Config = () => { return createEnv({ server: { YOUR_ENV_VAR: z.coerce.number().min(MIN).max(MAX).optional(), }, runtimeEnv: { YOUR_ENV_VAR: process.env.YOUR_ENV_VAR, }, }); };

export const <domain>Env = get<Domain>Config();

  1. Update Type (if new domain)

Add to packages/types/src/serverConfig.ts :

import { User<Domain>Config } from './user/settings';

export interface GlobalServerConfig { <domain>?: PartialDeep<User<Domain>Config>; }

Prefer reusing existing types from packages/types/src/user/settings .

  1. Assemble Server Config (if new domain)

In src/server/globalConfig/index.ts :

import { <domain>Env } from '@/envs/<domain>';

export const getServerGlobalConfig = async () => { const config: GlobalServerConfig = { <domain>: cleanObject({ <settingName>: <domain>Env.YOUR_ENV_VAR, }), }; return config; };

  1. Merge to User Store (if new domain)

In src/store/user/slices/common/action.ts :

const serverSettings: PartialDeep<UserSettings> = { <domain>: serverConfig.<domain>, };

  1. Update .env.example

<Description> (range/options, default: X)

YOUR_ENV_VAR=<example>

  1. Update Documentation
  • docs/self-hosting/environment-variables/basic.mdx (EN)

  • docs/self-hosting/environment-variables/basic.zh-CN.mdx (CN)

Example: AI_IMAGE_DEFAULT_IMAGE_NUM

// src/envs/image.ts AI_IMAGE_DEFAULT_IMAGE_NUM: z.coerce.number().min(1).max(20).optional(),

// packages/types/src/serverConfig.ts image?: PartialDeep<UserImageConfig>;

// src/server/globalConfig/index.ts image: cleanObject({ defaultImageNum: imageEnv.AI_IMAGE_DEFAULT_IMAGE_NUM }),

// src/store/user/slices/common/action.ts image: serverConfig.image,

// .env.example

AI_IMAGE_DEFAULT_IMAGE_NUM=4

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

react

No summary provided by upstream source.

Repository SourceNeeds Review
-1.3K
lobehub
General

zustand

No summary provided by upstream source.

Repository SourceNeeds Review
General

project-overview

No summary provided by upstream source.

Repository SourceNeeds Review