diff --git a/backend/package-lock.json b/backend/package-lock.json index c978a04..effc902 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@azure/cosmos": "^4.2.0", "@bytelyst/auth": "file:../../learning_ai_common_plat/packages/auth", + "@bytelyst/backend-config": "file:../../learning_ai_common_plat/packages/backend-config", "@bytelyst/config": "file:../../learning_ai_common_plat/packages/config", "@bytelyst/cosmos": "file:../../learning_ai_common_plat/packages/cosmos", "@bytelyst/datastore": "file:../../learning_ai_common_plat/packages/datastore", @@ -38,6 +39,17 @@ "jose": ">=5.0.0" } }, + "../../learning_ai_common_plat/packages/backend-config": { + "name": "@bytelyst/backend-config", + "version": "0.1.0", + "dependencies": { + "zod": "^3.24.2" + }, + "devDependencies": { + "typescript": "^5.7.3", + "vitest": "^3.0.5" + } + }, "../../learning_ai_common_plat/packages/config": { "name": "@bytelyst/config", "version": "0.1.0", @@ -359,6 +371,10 @@ "resolved": "../../learning_ai_common_plat/packages/auth", "link": true }, + "node_modules/@bytelyst/backend-config": { + "resolved": "../../learning_ai_common_plat/packages/backend-config", + "link": true + }, "node_modules/@bytelyst/config": { "resolved": "../../learning_ai_common_plat/packages/config", "link": true diff --git a/backend/package.json b/backend/package.json index 50a0f68..36de7e1 100644 --- a/backend/package.json +++ b/backend/package.json @@ -17,6 +17,7 @@ "@bytelyst/config": "file:../../learning_ai_common_plat/packages/config", "@bytelyst/cosmos": "file:../../learning_ai_common_plat/packages/cosmos", "@bytelyst/datastore": "file:../../learning_ai_common_plat/packages/datastore", + "@bytelyst/backend-config": "file:../../learning_ai_common_plat/packages/backend-config", "@bytelyst/errors": "file:../../learning_ai_common_plat/packages/errors", "@bytelyst/fastify-auth": "file:../../learning_ai_common_plat/packages/fastify-auth", "@bytelyst/fastify-core": "file:../../learning_ai_common_plat/packages/fastify-core", diff --git a/backend/src/lib/config.ts b/backend/src/lib/config.ts index 2615d67..6f65c1c 100644 --- a/backend/src/lib/config.ts +++ b/backend/src/lib/config.ts @@ -1,16 +1,10 @@ -import { z } from 'zod'; +import { baseBackendConfigSchema } from '@bytelyst/backend-config'; -const envSchema = z.object({ - PORT: z.coerce.number().default(4011), - HOST: z.string().default('0.0.0.0'), - NODE_ENV: z.enum(['development', 'production', 'test']).default('development'), - CORS_ORIGIN: z.string().optional(), - SERVICE_NAME: z.string().default('chronomind-backend'), - COSMOS_ENDPOINT: z.string().min(1, 'COSMOS_ENDPOINT is required'), - COSMOS_KEY: z.string().min(1, 'COSMOS_KEY is required'), - COSMOS_DATABASE: z.string().default('lysnrai'), - JWT_SECRET: z.string().min(1, 'JWT_SECRET is required'), - PLATFORM_JWKS_URL: z.string().url().optional(), +const envSchema = baseBackendConfigSchema.extend({ + PORT: baseBackendConfigSchema.shape.PORT.default(4011), + SERVICE_NAME: baseBackendConfigSchema.shape.SERVICE_NAME.default('chronomind-backend'), + COSMOS_ENDPOINT: baseBackendConfigSchema.shape.COSMOS_ENDPOINT.refine(v => v.length > 0, 'COSMOS_ENDPOINT is required'), + COSMOS_KEY: baseBackendConfigSchema.shape.COSMOS_KEY.refine(v => v.length > 0, 'COSMOS_KEY is required'), }); export const config = envSchema.parse(process.env);