feat: API Gateway (Express 5 + Prisma + Monday) y conexion de apps al API
- api-gateway: servicio Monday (retry 429/complejidad, paginacion cursor, column IDs por titulo), endpoints unidades/cotizaciones/clientes/planes, webhook con handshake challenge, Prisma SQLite dev, 55 tests - cotizador: inventario desde /api/unidades con fallback a seed - alta-clientes: POST /api/clientes + upload multipart de documentos - cobranza: persistencia via API con respaldo offline en localStorage - .env.example con board IDs del workspace Frasa-CAS
This commit is contained in:
34
api-gateway/src/config/index.ts
Normal file
34
api-gateway/src/config/index.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import path from 'node:path'
|
||||
import dotenv from 'dotenv'
|
||||
|
||||
// Carga .env local si existe y luego el .env raíz del ecosistema (no pisa vars ya definidas)
|
||||
dotenv.config({ path: [path.resolve(process.cwd(), '.env'), path.resolve(process.cwd(), '..', '.env')] })
|
||||
|
||||
function env(name: string, fallback?: string): string {
|
||||
const v = process.env[name] ?? fallback
|
||||
if (v === undefined) throw new Error(`Falta la variable de entorno ${name}`)
|
||||
return v
|
||||
}
|
||||
|
||||
export const config = {
|
||||
port: Number(env('PORT', '3000')),
|
||||
nodeEnv: env('NODE_ENV', 'development'),
|
||||
databaseUrl: env('DATABASE_URL', 'file:./dev.db'),
|
||||
uploadsDir: path.resolve(process.cwd(), env('UPLOADS_DIR', './uploads')),
|
||||
monday: {
|
||||
apiKey: env('MONDAY_API_KEY'),
|
||||
apiUrl: env('MONDAY_API_URL', 'https://api.monday.com/v2'),
|
||||
apiVersion: '2024-10',
|
||||
boards: {
|
||||
contactos: env('MONDAY_BOARD_CONTACTOS'),
|
||||
desarrollos: env('MONDAY_BOARD_DESARROLLOS'),
|
||||
unidades: env('MONDAY_BOARD_UNIDADES'),
|
||||
leads: env('MONDAY_BOARD_LEADS'),
|
||||
oportunidades: env('MONDAY_BOARD_OPORTUNIDADES'),
|
||||
apartado: env('MONDAY_BOARD_APARTADO'),
|
||||
ventas: env('MONDAY_BOARD_VENTAS'),
|
||||
},
|
||||
},
|
||||
} as const
|
||||
|
||||
export type AppConfig = typeof config
|
||||
Reference in New Issue
Block a user