Aller au contenu
useffect.sh
Planifier 30 min avec un senior
TWENTY · BACKEND GRAPHQL

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.

Planifier 30 min

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