Landing Page y Monitor de Servicios "Soul:23"

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.

Características Principales

  • 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

Instalación y Ejecución Local

Para ejecutar el proyecto en un entorno de desarrollo local, sigue estos pasos:

  1. Clona el repositorio:

    git clone <url-del-repositorio>
    cd soul23_placeholder
    
  2. Instala las dependencias: Asegúrate de tener Node.js (v18 o superior) y npm instalados.

    npm install
    
  3. Inicia el servidor:

    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:
      {
        "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):
      {
        "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.
Description
No description provided
Readme 688 KiB
Languages
JavaScript 93.5%
CSS 5.2%
Python 0.9%
HTML 0.4%