API & Backend

Le backend de Foro Redención est composé de fonctions serverless Node.js déployées sur Vercel. Chaque fichier dans api/api expose un handler (req, res) compatible.

Endpoints disponibles

Route Méthode Description
/api/news GET Fournit les contenus éditoriaux consommés dans l'onglet Articles.
/api/send-fcm-push POST Envoie des notifications FCM ciblées et purge les tokens invalides.
/api/send-thread-push POST Notifie les nouveaux messages dans un fil privé.
/api/send-push POST Canal générique pour déclencher des notifications OneSignal avec métadonnées.
/api/check-toxicity POST Évalue la toxicité d'un texte pour la modération automatique.

Exemple : push ciblé

{
  "toUids": ["uidDestinataire"],
  "title": "Nouveau message",
  "body": "Activité dans ton fil",
  "data": { "threadId": "abc123" }
}

L'endpoint send-fcm-push vérifie le token Bearer, nettoie les tokens invalides dans Firestore et renvoie un résumé d'envoi.

Sécurité et authentification

  • Requiert Authorization: Bearer <ID_TOKEN> pour les endpoints push.
  • Utilise FIREBASE_SERVICE_ACCOUNT pour initialiser l'Admin SDK.
  • Normalise le payload data (conversion en JSON si besoin).
  • Nettoie automatiquement les tokens invalides via FieldValue.arrayRemove.

Monitoring et métriques

Recommandations pour assurer la fiabilité des fonctions :

  • Logs structurés : utilisez console.info/console.error avec des IDs de requêtes.
  • Métriques : envoyez des événements vers GA4 ou Amplitude pour suivre les résultats d'envoi.
  • Alertes : définissez des webhooks Vercel ou cron externes pour tester la disponibilité des endpoints.

Documentez les versions de dépendances dans le repo api et ajoutez des tests unitaires (Jest/Vitest) pour les handlers critiques.

Stratégie de déploiement

  1. Utilisez vercel dev pour tester avant de déployer.
  2. Configurez FIREBASE_SERVICE_ACCOUNT, ONESIGNAL_APP_ID, ONESIGNAL_REST_KEY dans Vercel.
  3. Surveillez le tableau de bord Vercel pour les erreurs à froid.
  4. Activez CORS explicitement si l'API est exposée à des tiers.