API & Intégrations¶
Endpoints internes (Next.js API routes)¶
/src/app/api/- RESTful, typés TypeScript
Notifications¶
Les notifications se décomposent en 2 parties :
- Inbox (cloche) : alimentée par la table
public.notification_logs. - Push web : s’appuie sur
public.push_subscriptions(service worker + Web Push).
Endpoints¶
GET /api/notifications/logs?unread=true: nombre de notifications non lues.GET /api/notifications/logs?limit=20&offset=0: liste des dernières notifications.-
PATCH /api/notifications/logs: marquer lu ({ markAll: true }ou{ ids: string[] }). -
GET /api/notifications/diagnostics: état complet (prefs, subs, events, logs) pour debug. -
POST /api/notifications/test-push: envoie un push de test + écrit une entrée inbox (utile pour valider la cloche). -
POST /api/notifications/push-subscribe: enregistre un device (endpoint + keys). POST /api/notifications/push-unsubscribe: désenregistre un device.-
POST /api/notifications/push-clear: supprime tous les devices push de l’utilisateur. -
GET /api/notifications/preferences: lire les préférences. PATCH /api/notifications/preferences: mettre à jour les préférences.
Authentification¶
- Supabase (JWT, session)
- Middlewares de protection des routes
Strava¶
- OAuth2, synchronisation d’activités
- Stockage des tokens dans Supabase
- Webhooks (si activé)
Stripe¶
- Paiements, abonnements
- Webhooks Stripe
Supabase Storage¶
- Uploads d’images, fichiers
Exemples d’appel API¶
const res = await fetch("/api/mon-endpoint", {
method: "POST",
body: JSON.stringify(data),
});
Sécurité¶
- Validation des entrées (zod, types)
- Auth obligatoire sur les routes sensibles