Description du projet
TraduitLe travail couvre l'ensemble de la pile backend GraphQL : un schéma orienté type pour nos entités clés, des résolveurs sur une couche PostgreSQL optimisée, une authentification JWT transmise par le contexte, et une autorisation au niveau des champs afin que différents rôles ne voient que ce qu'ils doivent. La partie temps réel est également importante — le statut des commandes et les notifications doivent atteindre les clients via des abonnements WebSocket, et non par un sondage constant. Au-delà de la justesse, nous nous soucions de la sécurité et du contrôle des coûts de requêtes : limites de profondeur et de complexité, plus des requêtes persistées pour les clients mobiles.
Puisque cela remplace une API en direct, un chemin de migration propre et une documentation claire font partie de la tâche, pas un bonus. Parlez-nous d'une API GraphQL que vous avez livrée et comment vous avez résolu les problèmes d'autorisation et de performance. Portée détaillée ci-dessous.
1. Conception du schéma
— Orienté type : Utilisateur, Produit, Commande, Avis, Notification
— Types d'entrée, mutations
— Scalars personnalisés (Date, JSON, Upload)
— Types Enum pour les champs de statut
2. Mise en œuvre
— Apollo Server 4 + Express
— DataLoader pour prévenir les requêtes N+1
— Authentification JWT via le contexte
— Autorisation au niveau des champs
— Abonnements via WebSocket (statut des commandes, notifications)
3. Performance et qualité
— Limites de profondeur/complexité des requêtes
— Requêtes persistées pour les clients mobiles
— Optimisation PostgreSQL (EXPLAIN ANALYZE)
— Tests unitaires pour les résolveurs (Jest + Supertest)
— Intégration Apollo Studio
4. Documentation
— Schéma documenté (descriptions de tous les types)
— Collection Postman/Insomnia
— Guide de migration depuis REST