diff --git a/backend/package-lock.json b/backend/package-lock.json index 2887774..397bc41 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", @@ -40,6 +41,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", @@ -383,6 +395,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 ad87d79..1e0a913 100644 --- a/backend/package.json +++ b/backend/package.json @@ -18,6 +18,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 1602593..200b4b3 100644 --- a/backend/src/lib/config.ts +++ b/backend/src/lib/config.ts @@ -1,18 +1,11 @@ import { z } from 'zod'; +import { baseBackendConfigSchema } from '@bytelyst/backend-config'; import { PRODUCT_ID } from './product-config.js'; -const envSchema = z.object({ - PORT: z.coerce.number().default(4016), - 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('notelett-backend'), - COSMOS_ENDPOINT: z.string().min(1, 'COSMOS_ENDPOINT is required').optional(), - COSMOS_KEY: z.string().min(1, 'COSMOS_KEY is required').optional(), - COSMOS_DATABASE: z.string().default('bytelyst'), - JWT_SECRET: z.string().min(1, 'JWT_SECRET is required'), - PLATFORM_JWKS_URL: z.string().url().optional(), - DB_PROVIDER: z.enum(['cosmos', 'memory']).default('cosmos'), +const envSchema = baseBackendConfigSchema.extend({ + PORT: baseBackendConfigSchema.shape.PORT.default(4016), + SERVICE_NAME: baseBackendConfigSchema.shape.SERVICE_NAME.default('notelett-backend'), + COSMOS_DATABASE: baseBackendConfigSchema.shape.COSMOS_DATABASE.default('bytelyst'), PRODUCT_ID: z.string().default(PRODUCT_ID), PLATFORM_SERVICE_URL: z.string().default('http://localhost:4003'), EXTRACTION_SERVICE_URL: z.string().default('http://localhost:4005'),