Aller au contenu
useffect.sh
Planifier 30 min avec un senior
EPSOR · UNIVERSAL APP

Web et mobile.
Un seul code.

Une app d’épargne salariale qui partage enfin son code entre le web et le mobile.

Année
2025–26
Durée
6 mois
Équipe
1 senior · 2 équipes
Stack
Expo · Next.js · pnpm

Contexte

Epsor simplifie l’épargne salariale et retraite de plus de 200 000 salariés, dans plus de 1 500 entreprises. Le web tourne sur Next.js, le mobile sur Expo, et l’équipe avait commencé un package d’écrans partagé entre les deux.

Le défi

Le mobile vivait hors du monorepo : impossible de tester le package partagé dans les deux apps, et les versions de React divergeaient entre Next.js et le mobile. Il fallait tout aligner étape par étape, sans bloquer les équipes qui continuaient de livrer sur chaque repo.

Ce qu’on a livré

  • App mobile rapatriée dans le monorepo, configuration Expo comprise
  • Versions de React alignées entre Next.js et le mobile
  • Package d’écrans partagé entre web et mobile, testable des deux côtés
  • TanStack Query pour des données partagées et compatibles SSR
  • Storybook commun au web et au mobile
  • Migration de npm vers pnpm, CI unifiée et jobs en parallèle
  • Une nouvelle app dont tout le design change selon l’utilisateur connecté, design tokens stockés en base

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

05 / TWENTY · BACKEND GRAPHQL

Un schéma GraphQL.
Par client.

22 mois au cœur d’un CRM open source : une API GraphQL générée à la volée pour chaque workspace, avec son cache, puis Twenty ORM.

224PRs mergées en 22 mois

1 / tenantschéma GraphQL par workspace