API & Backend

El backend de Foro se organiza como funciones serverless Node.js desplegadas en Vercel. Cada archivo dentro de api/api expone un handler (req, res) compatible con la plataforma.

Endpoints disponibles

Ruta Método Descripción
/api/news GET Entrega entradas editoriales con prioridad y fecha. Consumido por la pestaña "Entradas".
/api/send-fcm-push POST Envía notificaciones FCM a usuarios específicos, limpiando tokens inválidos.
/api/send-thread-push POST Coordina notificaciones de nuevos mensajes dentro de un hilo de MD.
/api/send-push POST Canal genérico para disparar notificaciones OneSignal con metadata custom.
/api/check-toxicity POST Evalúa texto y devuelve probabilidad de toxicidad para moderación automática.

Ejemplo: enviar push dirigido

{
  "toUids": ["uidDestinatario"],
  "title": "Nuevo mensaje",
  "body": "Tienes actividad en tu hilo",
  "data": { "threadId": "abc123" }
}

El endpoint send-fcm-push verifica el token Bearer recibido en la cabecera Authorization, elimina tokens inválidos en Firestore y responde con el resumen de envíos.

Seguridad y autenticación

  • Se requiere Authorization: Bearer <ID_TOKEN> para los endpoints de push; el token se valida contra Firebase Auth.
  • El servicio usa FIREBASE_SERVICE_ACCOUNT (JSON) para inicializar el Admin SDK.
  • Se normaliza el payload data convirtiendo valores no string a JSON antes de enviarlos.
  • Tokens inválidos se limpian automáticamente con FieldValue.arrayRemove.

Monitorización y métricas

Para garantizar entregas fiables se recomienda instrumentar los servicios serverless con los siguientes componentes Opciónales:

  • Logs estructurados: usa console.info y console.error con IDs de solicitud para analizar en el panel de Vercel.
  • métricas: envía eventos a Google Analytics 4 o Amplitude cuando un push es aceptado, rechazado o marca tokens inválidos.
  • Alertas: configura webhooks de Vercel o cron jobs externos para validar que los endpoints respondan 200.

Además, documenta versiones de dependencias en el repositorio api y crea pruebas unitarias ligeras para los handlers críticos (FCM, toxicidad) con jest o vitest.

Estrategia de despliegue

Recomendaciones para mantener el backend estable:

  1. Usa vercel dev para probar endpoints localmente antes de desplegar.
  2. Configura variables de entorno en Vercel: FIREBASE_SERVICE_ACCOUNT, ONESIGNAL_APP_ID, ONESIGNAL_REST_KEY.
  3. Instrumenta logs con console.error y utiliza el panel de Vercel para monitorear errores en frío.
  4. Activa CORS de forma explícita (ya se permite *) si planeas exponer la API a terceros.