me
Back to all articles
Post in FrenchFrench flag
Daryl Ngako

Stack Client vs Stack Perso : Pourquoi je les sépare

La logique derrière le choix d'un stack n'est pas la même. Voici comment j'aborde ça en tant que dev freelance, avec des exemples concrets et mon stack de référence.

freelancestackside-project

Un projet client et un projet perso, c'est pas le même sport.

J'ai longtemps appliqué la même logique aux deux. J'utilisais ce qui m'intéressait, ce qui était hype, ce que j'avais envie de tester. Et j'ai vite appris à mes dépens que ça ne marche pas comme ça. Choisir un stack, c'est avant tout une question de contexte, d'objectif et de risque.

Dans cet article, je te partage mon avis perso sur comment j'aborde le choix du stack selon que je travaille pour un client ou sur mes propres projets. Tu vas voir que la logique derrière est vraiment différente, et que confondre les deux peut te coûter cher.

Le contexte change tout

Avant de parler d'outils, il faut qu'on soit d'accord sur un truc : un projet client et un projet perso n'ont pas les mêmes contraintes.

Un projet client, c'est :

  • Un budget et un délai définis à l'avance
  • Un client qui attend un livrable fonctionnel, pas une démo
  • Des technos qui doivent être maintenables par quelqu'un d'autre (ou par toi dans 6 mois)
  • Zéro tolérance pour les "je teste un nouveau truc en prod"

Un projet perso, c'est :

  • Ta propre règle du jeu
  • La liberté d'expérimenter, de casser, de recommencer
  • Un laboratoire où tu apprends sans conséquences directes
  • L'espace parfait pour tester ce que tu veux embarquer ensuite en client

Ces deux mondes ont des règles totalement différentes. Et le stack que tu choisis doit refléter ça.

Pour les projets clients : la fiabilité avant tout

Sur un projet client, mon premier critère c'est la prévisibilité. Je veux savoir ce qui va se passer à chaque étape.

Le principe de base : utilise ce que tu maîtrises

Ce n'est pas le moment de découvrir un nouveau framework. Si tu es à l'aise avec Next.js + Prisma + base de données postgres, c'est ça que tu utilises. Point.

Tu vas aller plus vite, faire moins d'erreurs et livrer quelque chose que tu peux défendre.

Règle d'or : Un projet client n'est pas un terrain d'entraînement. Tu utilises ce que tu connais, pas ce qui te fait envie.

Mon stack de référence pour les projets clients

Voici ce que j'utilise par défaut sur la grande majorité de mes missions :

CoucheChoix
FrontendNext.js (App Router)
UITailwind CSS + shadcn/ui
Base de donnéesPostgreSQL + Prisma
AuthBetterAuth
DéploiementVercel ou VPS
PaiementStripe

Ce stack, je le connais par coeur. Je sais où ça coince, je sais comment déboguer, je sais comment déployer. Et surtout, je sais livrer dans les temps.

Évite les stack "hype"

Chaque année, un nouveau méta-framework sort et tout le monde s'emballe. Remix, SvelteKit, Qwik... Ces outils peuvent être excellents, mais si tu les découvres sur un projet client, tu vas passer plus de temps à lire la doc qu'à coder.

Attention : ça ne veut pas dire qu'il faut rester figé. Ça veut dire que tu testes d'abord sur tes projets perso, et que tu intègres ensuite progressivement sur les clients une fois que tu es à l'aise.

Pour les projets perso : expérimente sans te retenir

Là c'est l'inverse total. Mes projets perso, c'est mon terrain de jeu. Je teste des trucs qui me font envie, même si c'est pas encore stable.

Le principe : apprendre par la pratique

Je ne lis pas des tutos pour apprendre. Je construis quelque chose. Et les projets perso sont l'endroit parfait pour ça.

C'est comme ça que j'ai appris à utiliser n8n pour l'automatisation, que j'ai expérimenté avec les LLMs en local, que j'ai bossé sur des architectures de type AI agent... Aucun client ne m'aurait laissé faire ça directement en prod.

Ce que j'ai appris récemment lors de mes projets perso

Deux outils que mes projets perso m'ont vraiment permis de creuser : Convex et Supabase.

Convex, c'est un backend as a service "full-stack" pensé pour les devs JS/TS. Tu définis tes fonctions directement en TypeScript, et Convex gère la base de données, les queries en temps réel, les mutations et même les jobs en arrière-plan. Pas de REST à écrire, pas d'ORM à configurer, pas de serveur à gérer.

Ce qui m'a accroché sur Convex :

  • Le temps réel : les données se synchronisent automatiquement dans le client, sans WebSocket à gérer à la main
  • Tout est typé de bout en bout : du schéma de la DB jusqu'au composant React, zéro friction
  • Le DX est vraiment agréable : tu restes dans ton codebase TS, tu ne jonglles pas entre trois outils différents

Supabase, c'est une autre bête. C'est l'alternative open-source à Firebase, construite sur PostgreSQL. Tu as la base de données, l'auth, le storage et même des edge functions, tout dans une seule interface.

Ce qui m'a convaincu sur Supabase :

  • PostgreSQL en dessous : tu gardes toute la puissance du SQL, avec des relations propres et des migrations versionnées
  • L'auth est prête en 10 minutes : OAuth, magic link, email/password, tout est là sans écrire une ligne de back

Les deux répondent à des besoins différents. Convex brille sur les apps temps réel. Pour Supabase : PostgreSQL et SQL standard, tout le monde connaît, tout le monde peut maintenir. Aujourd'hui je sais exactement lequel sortir selon le projet, et c'est uniquement parce que je les ai testés sur mes propres trucs d'abord.

Comment faire le pont entre les deux

Ce que j'ai mis en place personnellement, c'est un flux assez simple :

1. Je repère un outil intéressant

Je lis un article, je vois une démo, un collègue m'en parle. Je note.

2. Je l'intègre dans un projet perso

Je construis quelque chose de petit mais de concret avec. Un side project, un outil interne, n'importe quoi qui me force à vraiment l'utiliser.

3. J'évalue après quelques semaines

Est-ce que c'est stable ? Est-ce que la DX est bonne ? Est-ce que je pourrais l'expliquer à un junior ? Si oui, il rentre dans mon stack "client" potentiel.

4. Je l'introduis progressivement chez les clients

D'abord sur un projet peu critique, avec un client tech-friendly. Puis de façon plus large une fois que j'ai du recul.

Ce cycle prend du temps, mais il évite de se planter sur des missions importantes.

Récapitulatif

CritèreProjet clientProjet perso
PrioritéFiabilité, délai, maintenabilitéApprentissage, expérimentation
StackMaîtrisé, éprouvéNouveau, en cours d'exploration
Tolérance au bugFaibleHaute
ObjectifLivrer ce qui a été promisComprendre, tester, construire
InnovationAprès validation persoOui, librement

Conclusion

Choisir un stack, c'est avant tout choisir selon le contexte. Ni trop conservateur pour ne jamais progresser, ni trop aventureux pour ne jamais livrer.

Mes projets perso m'ont permis de construire un stack client solide et différenciant. Et mon stack client me permet de financer les projets perso où j'expérimente sans filet.

Les deux se nourrissent mutuellement. C'est ça le vrai game.

Si tu veux challenger tes choix techniques avant de les sortir sur un projet critique, viens m'en parler directement sur LinkedIn. Je suis toujours curieux de découvrir de nouveaux workflows et d'échanger sur ce qui marche (ou pas).