Quick Start
Install, define a schema, validate, ship.
Install
pnpm add confkit
# optional adapters
pnpm add @confkit/next @confkit/vite @confkit/expo @confkit/aws @confkit/gcp @confkit/azure @confkit/doppler @confkit/1password
npm i confkit
npm i @confkit/next @confkit/vite @confkit/expo @confkit/aws @confkit/gcp @confkit/azure @confkit/doppler @confkit/1password
yarn add confkit
yarn add @confkit/next @confkit/vite @confkit/expo @confkit/aws @confkit/gcp @confkit/azure @confkit/doppler @confkit/1password
bun add confkit @confkit/next @confkit/vite @confkit/expo @confkit/aws @confkit/gcp @confkit/azure @confkit/doppler @confkit/1password
Define your schema and sourcesconf/config.ts
import { defineConfig, s, source } from 'confkit';
export const config = defineConfig({
sources: [
source().env(),
source().file('config.yaml'),
],
schema: {
NODE_ENV: s.enum(['development','test','production']).default('development'),
PORT: s.port().default(3000),
DATABASE_URL: s.url(),
REDIS_URL: s.string().optional(),
FEATURES: s.object({
newCheckout: s.boolean().default(false),
abTestVariant: s.enum(['A','B']).default('A'),
}).default({ newCheckout: false, abTestVariant: 'A' }),
STRIPE_SECRET: s.secret(s.string()),
PUBLIC_APP_NAME: s.string().client().default('confkit'),
},
});
Load once at startupserver.ts
import { config } from './conf/config';
const env = await config.ready();
console.log('PORT:', env.PORT);
Debug with the CLIPrint redacted values
npx confkit print --file conf/config.ts
Expose safe client envnext.config.mjs (Next.js)
import { loadConfig } from 'confkit/load';
const { clientEnv } = await loadConfig({ file: './conf/config.ts' });
export default { env: clientEnv };
What’s next?
- Learn the Schema helpers
- Layer Sources and add cloud providers
- Use Variable Expansion for computed defaults