Configuración del proyecto y salida de build

This commit is contained in:
Trabajo
2026-05-05 09:39:12 +02:00
parent ad1a981c3b
commit 615fe7f2c8
4 changed files with 19 additions and 14 deletions

4
.gitignore vendored
View File

@@ -1,3 +1,6 @@
# TypeScript build output
dist/
# ---> Node # ---> Node
# Logs # Logs
logs logs
@@ -142,3 +145,4 @@ dist
# JetBrains IDE local state # JetBrains IDE local state
.idea/ .idea/

View File

@@ -1,4 +1,4 @@
# sf-monitorizacion-health # sf-monitorizacion-health
Aplicación Node.js/Express para monitorizar el endpoint de salud (`url_health`) de un conjunto de proyectos y mostrar un dashboard con el **último estado** registrado en PostgreSQL. Aplicación Node.js/Express para monitorizar el endpoint de salud (`url_health`) de un conjunto de proyectos y mostrar un dashboard con el **último estado** registrado en PostgreSQL.
@@ -12,16 +12,17 @@ Aplicación Node.js/Express para monitorizar el endpoint de salud (`url_health`)
- `TIMEOUT` si el error es `ECONNABORTED` - `TIMEOUT` si el error es `ECONNABORTED`
4. El dashboard (`GET /`) muestra, por proyecto, el **último** registro de `estados`. 4. El dashboard (`GET /`) muestra, por proyecto, el **último** registro de `estados`.
El job se ejecuta de forma periódica (cada 60s) en bucle recursivo para evitar solapamientos. El job se ejecuta de forma periódica (configurable desde la interfaz, por defecto 5 min) en bucle recursivo para evitar solapamientos.
## Requisitos ## Requisitos
- Node.js 18+ (recomendado) - Node.js 18+ (recomendado)
- TypeScript
- PostgreSQL - PostgreSQL
## Configuración ## Configuración
La app lee estas variables de entorno (consultadas desde `src/config/postgreConfig.ts`): La app lee estas variables de entorno (consultadas desde `src/config/postgres-config.ts`):
- `DB_HOST` - `DB_HOST`
- `DB_PORT` - `DB_PORT`
@@ -43,27 +44,26 @@ DB_NAME=sf_monitorizacion_health
La migración `deployment/database/migrations/001_init.sql` crea: La migración `deployment/database/migrations/001_init.sql` crea:
- `proyectos` - `proyectos` (con restricción UNIQUE en nombre y URL, y límite de 100 caracteres para el nombre)
- tipo ENUM `tipo_estado` con `OK`, `ERROR`, `TIMEOUT`
- `estados` - `estados`
- índice para consultar rápido el último estado por proyecto
> Nota: la migración hace `DROP TABLE IF EXISTS`, así que destruye los datos actuales. > Nota: La migración utiliza `CREATE TABLE IF NOT EXISTS`.
## Cómo ejecutar ## Cómo ejecutar
1. Instala dependencias: 1. Instala dependencias:
- `npm install` - `npm install`
2. Asegúrate de tener creada la BD (ejecuta `deployment/database/migrations/001_init.sql`). 2. Asegúrate de tener creada la BD (ejecuta `deployment/database/migrations/001_init.sql`).
3. Ejecuta en modo desarrollo: 3. Ejecuta los scripts disponibles:
- `npm run dev` - `npm run dev`: Inicia en modo desarrollo con `tsx`.
- `npm run build`: Compila el código TypeScript.
La app levanta el servidor en `http://localhost:3000`. La app levanta el servidor en `http://localhost:3000`.
## Dashboard ## Dashboard
Ruta: Ruta:
- `GET /` : renderiza `src/views/index.ejs` - `GET /` : renderiza la vista principal.
En la tabla se muestra: En la tabla se muestra:
- Nombre del proyecto (`proyectos.nombre`) - Nombre del proyecto (`proyectos.nombre`)
@@ -75,7 +75,7 @@ Si un proyecto todavía no tiene estados registrados, el dashboard muestra `PEND
## Añadir proyectos ## Añadir proyectos
Inserta en `proyectos`: Se pueden añadir desde la interfaz en `/nuevo` o mediante SQL:
```sql ```sql
INSERT INTO proyectos (nombre, url_health) INSERT INTO proyectos (nombre, url_health)
@@ -83,4 +83,3 @@ VALUES ('Mi proyecto', 'https://ejemplo.com/health');
``` ```
Los estados empezarán a generarse automáticamente cuando arranque el servidor y empiece el ciclo de checks. Los estados empezarán a generarse automáticamente cuando arranque el servidor y empiece el ciclo de checks.

View File

@@ -9,6 +9,7 @@
}, },
"scripts": { "scripts": {
"dev": "tsx src/index.ts", "dev": "tsx src/index.ts",
"build": "tsc",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"repository": { "repository": {

View File

@@ -2,8 +2,8 @@
// Visit https://aka.ms/tsconfig to read more about this file // Visit https://aka.ms/tsconfig to read more about this file
"compilerOptions": { "compilerOptions": {
// File Layout // File Layout
// "rootDir": "./src", "rootDir": "./src",
// "outDir": "./dist", "outDir": "./dist",
// Environment Settings // Environment Settings
// See also https://aka.ms/tsconfig/module // See also https://aka.ms/tsconfig/module
"module": "nodenext", "module": "nodenext",
@@ -37,3 +37,4 @@
"skipLibCheck": true, "skipLibCheck": true,
} }
} }