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
dataconvirtiendo 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.infoyconsole.errorcon 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:
- Usa
vercel devpara probar endpoints localmente antes de desplegar. - Configura variables de entorno en Vercel:
FIREBASE_SERVICE_ACCOUNT,ONESIGNAL_APP_ID,ONESIGNAL_REST_KEY. - Instrumenta logs con
console.errory utiliza el panel de Vercel para monitorear errores en frío. - Activa CORS de forma explícita (ya se permite
*) si planeas exponer la API a terceros.