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_ACCOUNTpour 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.erroravec 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
- Utilisez
vercel devpour tester avant de déployer. - Configurez
FIREBASE_SERVICE_ACCOUNT,ONESIGNAL_APP_ID,ONESIGNAL_REST_KEYdans Vercel. - Surveillez le tableau de bord Vercel pour les erreurs à froid.
- Activez CORS explicitement si l'API est exposée à des tiers.