mirror of
https://github.com/marcogll/soul23_placeholder_site_server.git
synced 2026-01-13 13:25:18 +00:00
feat: Document new service monitoring and quote API, and implement quote API endpoint with enhanced health checks.
This commit is contained in:
137
README.md
137
README.md
@@ -1,22 +1,133 @@
|
||||
# Soul:23 coming soon page
|
||||
# Landing Page y Monitor de Servicios "Soul:23"
|
||||
|
||||
A responsive landing page built with Bootstrap 4 that displays a countdown and a notification form.
|
||||
Este repositorio contiene el código para una landing page de "próximamente" junto con un sistema de monitoreo de servicios integrado. La aplicación está construida con Node.js y Express, y es capaz de servir contenido estático y exponer una API con varios endpoints funcionales.
|
||||
|
||||
## Local Installation
|
||||
## Características Principales
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm start
|
||||
* **Landing Page Responsiva**: Una página de "próximamente" con un contador regresivo, construida con Bootstrap 4.
|
||||
* **API de Frases**: Un endpoint que entrega una frase aleatoria en cada solicitud.
|
||||
* **Monitor de Salud de Servicios**: Un endpoint avanzado que ejecuta un script de Python para verificar el estado de múltiples sitios y servicios web, categorizados en internos, de empresa y externos.
|
||||
* **Servidor Flexible**: Configurado para servir archivos estáticos, HTML dinámico y endpoints JSON.
|
||||
* **Contenerización**: Listo para desplegarse con Docker.
|
||||
|
||||
## Estructura del Proyecto
|
||||
|
||||
```
|
||||
/
|
||||
├─── data/
|
||||
│ ├─── quotes.json
|
||||
│ └─── sites.json
|
||||
├─── htmls/
|
||||
│ └─── telegram.html
|
||||
├─── scripts/
|
||||
│ └─── health_checker.py
|
||||
├─── css/
|
||||
├─── js/
|
||||
├─── img/
|
||||
├─── .gitignore
|
||||
├─── docker-compose.yml
|
||||
├─── Dockerfile
|
||||
├─── index.html
|
||||
├─── package.json
|
||||
├─── server.js
|
||||
└─── README.md
|
||||
```
|
||||
|
||||
The Express server serves all assets from the root and exposes a `/healthchecker` endpoint with the health script as `text/plain`, ready for operators to download with `curl`.
|
||||
## Instalación y Ejecución Local
|
||||
|
||||
## Countdown and Form
|
||||
Para ejecutar el proyecto en un entorno de desarrollo local, sigue estos pasos:
|
||||
|
||||
The time component reads the `data-date` attribute in `#countdown-timer`. Change it to any valid date:
|
||||
1. **Clona el repositorio**:
|
||||
```bash
|
||||
git clone <url-del-repositorio>
|
||||
cd soul23_placeholder
|
||||
```
|
||||
|
||||
```html
|
||||
<div id="countdown-timer" data-date="January 17, 2025 03:24:00">
|
||||
```
|
||||
2. **Instala las dependencias**:
|
||||
Asegúrate de tener Node.js (v18 o superior) y npm instalados.
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
If you prefer to program it with JavaScript, reassign the `countDownDate` variable inside `js/countdown.js` before the interval starts.
|
||||
3. **Inicia el servidor**:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
El servidor se iniciará en `http://localhost:3001` por defecto.
|
||||
|
||||
## Documentación Detallada de Componentes
|
||||
|
||||
### `server.js`
|
||||
|
||||
Es el núcleo de la aplicación. Configura un servidor Express que gestiona todas las rutas y la lógica principal.
|
||||
|
||||
#### Endpoints de la API
|
||||
|
||||
* **`GET /day-quote`**
|
||||
* **Descripción**: Devuelve una frase motivacional aleatoria.
|
||||
* **Lógica**: Lee el arreglo de frases de `data/quotes.json`, selecciona una al azar y la sirve.
|
||||
* **Respuesta de Ejemplo**:
|
||||
```json
|
||||
{
|
||||
"phrase": "El universo trabaja mientras tú sigues avanzando."
|
||||
}
|
||||
```
|
||||
|
||||
* **`GET /healthchecker`**
|
||||
* **Descripción**: Ejecuta un script de monitoreo en Python (`scripts/health_checker.py`) y devuelve un reporte detallado del estado de los servicios definidos en `data/sites.json`.
|
||||
* **Lógica**: Utiliza `child_process.exec` de Node.js para invocar el script de Python. Captura la salida JSON del script y la sirve como respuesta. Es ideal para tableros de monitoreo o webhooks.
|
||||
* **Respuesta de Ejemplo (truncada)**:
|
||||
```json
|
||||
{
|
||||
"timestamp": "2025-12-18T01:34:53.516Z",
|
||||
"internos": {
|
||||
"vps_soul23_status": "🟢 OK (VPS Reachable)",
|
||||
"coolify_status": 200
|
||||
},
|
||||
"empresa": {
|
||||
"vanity_web_status": 200
|
||||
},
|
||||
"externos": {
|
||||
"openai_status": "🟡 Advertencia (Partial System Outage)"
|
||||
},
|
||||
"execution_time_seconds": 17.83
|
||||
}
|
||||
```
|
||||
|
||||
* **`GET /telegram`**
|
||||
* **Descripción**: Sirve una página HTML (`htmls/telegram.html`) diseñada para gestionar redirecciones a la aplicación de Telegram, adaptándose a la plataforma del usuario.
|
||||
|
||||
* **`GET /health`**
|
||||
* **Descripción**: Un endpoint de salud básico que realiza una prueba de ping a una IP predefinida para una verificación rápida de conectividad.
|
||||
|
||||
* **`GET /time-server`**
|
||||
* **Descripción**: Proporciona la fecha y hora del servidor en múltiples formatos (ISO, Unix, legible).
|
||||
|
||||
### Directorio `data/`
|
||||
|
||||
Este directorio centraliza todos los datos que la aplicación necesita para funcionar.
|
||||
|
||||
* **`quotes.json`**: Un archivo JSON que contiene un único arreglo de strings llamado `phrases`. Cada string es una frase que puede ser servida por el endpoint `/day-quote`.
|
||||
* **`sites.json`**: El archivo de configuración para el monitor de salud. Contiene tres objetos principales: `internos`, `sitios_empresa` y `externos`. Cada objeto es un diccionario donde la clave es el nombre del servicio y el valor es su URL.
|
||||
|
||||
### Directorio `scripts/`
|
||||
|
||||
Contiene la lógica de negocio más compleja en forma de scripts.
|
||||
|
||||
* **`health_checker.py`**:
|
||||
* **Lenguaje**: Python 3.
|
||||
* **Dependencias**: `requests`.
|
||||
* **Lógica**:
|
||||
1. Carga la lista de sitios desde `../data/sites.json`.
|
||||
2. Itera sobre cada servicio y realiza diferentes tipos de verificaciones:
|
||||
* **Verificación simple**: Para la mayoría de los sitios, comprueba si la URL devuelve un código de estado HTTP 200.
|
||||
* **Endpoints de Salud Específicos**: Para servicios como `vps_soul23` y `formbricks`, realiza peticiones a sus endpoints `/health` y analiza la respuesta JSON para un estado más detallado.
|
||||
* **APIs de StatusPage**: Para servicios como OpenAI y Cloudflare, consulta su API de `statuspage.io` para obtener el estado oficial del servicio.
|
||||
3. Consolida todos los resultados en un único objeto JSON.
|
||||
4. Si la variable de entorno `WEBHOOK_URLS` está definida (con una o más URLs separadas por comas), envía el resultado JSON a cada webhook.
|
||||
5. Imprime el resultado JSON en la salida estándar para que `server.js` pueda capturarlo.
|
||||
|
||||
### Archivos de Contenerización
|
||||
|
||||
* **`Dockerfile`**: Contiene las instrucciones para construir una imagen de Docker de la aplicación. Utiliza una imagen base de Node.js, copia los archivos del proyecto, instala las dependencias de `npm` y define el comando para iniciar el servidor.
|
||||
* **`docker-compose.yml`**: Facilita la ejecución de la aplicación en un entorno local de Docker, gestionando la construcción de la imagen y la configuración de red.
|
||||
|
||||
Reference in New Issue
Block a user