Un schéma GraphQL.
Par client.
L’API d’un CRM open source, générée à la volée pour chaque client.
- Année
- 2023–25
- Durée
- 22 mois
- Équipe
- 1 senior
- Stack
- NestJS · GraphQL Yoga · Postgres
Contexte
Twenty est un CRM open source, plus de 58 000 étoiles sur GitHub. Chaque client crée ses propres objets et ses propres champs : l’API doit refléter le modèle de données de chaque workspace.
Le défi
GraphQL est statique par nature : un schéma, construit au démarrage. Il fallait un schéma différent pour chaque workspace, à chaque requête, déduit du token de l’utilisateur, sans écrouler les performances.
Ce qu’on a livré
- Patch de GraphQL Yoga pour NestJS : un schéma conditionnel selon le token
- Types, requêtes et résolveurs générés depuis les métadonnées du workspace
- Cache du schéma par workspace, invalidé quand les métadonnées changent
- Twenty ORM pour les objets standards et personnalisés
- Synchronisation et contrôle de santé des métadonnées
- Nouveau système de relations, soft delete, champ « créé par »
- Côté front : le group by des tableaux et des kanbans
Un sujet similaire ?
30 minutes avec un senior pour en parler, gratuitement.
Autres missions
02 / SEPHORA · MONOREPO MULTI-PAYS
Plusieurs apps.
Une seule base.
Un monorepo, trois apps pour l’Europe et le Moyen-Orient. Chaque pays reçoit ses réglages typés au démarrage, en LTR comme en RTL.
60variantes d’app, un seul repo
0fork par pays
04 / EPSOR · UNIVERSAL APP
Web et mobile.
Un seul code.
Six mois en renfort de deux équipes fintech : l’app mobile rapatriée dans le monorepo, des écrans partagés avec le web, et une nouvelle app dont le design change selon le client.
4apps web et mobile, un monorepo
200 000+salariés sur la plateforme