NestJS en production depuis 2018

Des développeurs experts en NestJS, en régie comme au forfait

API REST et GraphQL bâties pour scaler, ORM typés et sécurité au cœur de l'architecture.

Agence en forfait, ESN en régie

Lonestone est une agence NestJS et une ESN nantaise active partout en France depuis 2014. Son équipe de 30 développeurs, product managers et designers travaille avec NestJS depuis 2018 sur des API SaaS multi-tenant, des back-ends GraphQL fédérés et des plateformes métier complexes. Elle intervient en forfait avec une équipe complète engagée sur le résultat, ou en régie via l’offre Scale avec des développeurs NestJS au temps passé pour renforcer une équipe existante.

L’expertise dépasse le strict back-end. Les développeurs sont fullstack TypeScript (NestJS, Node, React, PostgreSQL) et travaillent main dans la main avec les product managers pour traduire les règles métier en modules NestJS testables et maintenables.

Pourquoi choisir Lonestone comme agence NestJS

L'expertise NestJS de l'équipe vient de plus de sept ans à livrer des API REST, des back-ends GraphQL et des plateformes SaaS qui scalent et restent sécurisées dans la durée.

NestJS en production depuis 2018

L’équipe Lonestone utilise NestJS depuis ses premières versions stables sur des API SaaS, des back-ends REST et GraphQL et des plateformes métier. Cette antériorité couvre toutes les évolutions majeures (TypeScript strict, dependency injection, interceptors, GraphQL code-first, microservices) et donne une vision claire des patterns qui tiennent dans la durée.

Une équipe back-end senior, dev + product

L’équipe est composée majoritairement de profils seniors avec cinq à dix ans d’expérience Node.js et NestJS, et associe développeurs back-end, product managers et SRE/DevOps sur les projets exigeants. La maturité de l’équipe permet d’arbitrer en continu entre architecture stricte et pragmatisme produit.

Régie ou forfait, selon votre besoin

Lonestone intervient en forfait avec une équipe complète engagée sur le résultat (mode habituel pour les nouvelles plateformes ou les refontes d’API), ou en régie via l’offre Scale avec des développeurs NestJS seniors au temps passé pour renforcer une équipe existante.

API REST et GraphQL typées de bout en bout

Tous les projets NestJS sont écrits en TypeScript strict. Les API REST génèrent une OpenAPI exploitable côté client via openapi-typescript ou orval, et les API GraphQL utilisent l’approche code-first pour partager le schéma sans duplication. Le contrat d’API ne peut plus se désynchroniser silencieusement entre back et front.

ORM au choix selon le contexte : Prisma, MikroORM, TypeORM, Drizzle

L’équipe maîtrise les quatre principaux ORM TypeScript et choisit selon le projet. Prisma sur les nouveaux projets pour le confort et les migrations générées, MikroORM quand le mapping objet-relationnel poussé prime, Drizzle pour la performance brute proche du SQL, TypeORM sur les bases historiques. Le choix se fait au cadrage et n’est pas un dogme.

Sécurité prise en charge au niveau de l'API

OWASP API Top 10 traité de bout en bout : authentification via Better Auth (sessions, OAuth, magic links, 2FA, organisations multi-tenant), permissions fines par utilisateur et par tenant via les Guards NestJS, validation systématique des inputs via class-validator ou Zod, rate limiting, audit log. La sécurité est cadrée dès le premier sprint, pas reportée à un audit de fin de projet.

Architecture qui scale du MVP à la plateforme

NestJS impose une structure (modules, providers, controllers, services) qui évite la dette accidentelle des back-ends Express improvisés. L’équipe pose les bons découpages dès le départ pour qu’une API démarrée en MVP supporte la montée en charge sans réécriture, et bascule vers des microservices uniquement quand le besoin métier le justifie.

Je ne peux que vous conseiller cette merveilleuse équipe pour mener à bien vos projets de développement applicatif. Écoute, expertise, force de propositions, délais et budget tenus.

Vincent GENOT

Vincent GENOT · DSSI - Directeur adjoint @ Vauclaire

Une architecture technique de pointe

Les technologies et architectures que nous choisissons sont éprouvées, robustes et évolutives. Nous basons la plupart de nos projets sur le boilerplate Lonestone que nous maintenons en open source.

L'équipe NestJS de Lonestone dans les bureaux de la Halle 6, île de Nantes
Le terrain de chasse de NestJS

Là où NestJS fait toute la différence

NestJS brille dès qu'un back-end doit grandir au-delà du MVP sans accumuler de dette. Voici les cas d'usage qui reviennent le plus souvent dans les projets Lonestone.

<div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/TechServer.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/TechServer.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">API REST documentées et versionnées</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Le cas d’usage le plus courant. NestJS expose une API REST cohérente, la génération automatique d’OpenAPI permet de partager le contrat avec les clients web et mobile via openapi-typescript ou orval. Versioning, dépréciation propre, monitoring des breaking changes.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Integration.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Integration.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Back-ends GraphQL code-first</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">L’approche code-first de NestJS GraphQL permet de définir le schéma directement depuis le code TypeScript, sans duplication ni dérive. Idéal pour les SaaS B2B avec un domaine métier riche où le typage côté client (Apollo, urql, Relay) compte autant que côté serveur.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Optimisation.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Optimisation.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Plateformes SaaS multi-tenant</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Le cas d’usage majeur de NestJS chez Lonestone. Modules par domaine métier, isolation des données par tenant, permissions et facturation à l’usage. Tout l’écosystème NestJS (decorators, guards, interceptors) sert ce type de plateforme.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Shield.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Shield.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Plateformes avec sécurité et permissions complexes</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Quand le métier impose des règles fines de permissions, des workflows multi-étapes, de la modération ou des audits réglementaires, l’architecture NestJS permet d’isoler la logique de sécurité de la logique métier. La testabilité reste haute, même quand la complexité explose.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Target.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Target.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Intégrations IA et agents back-end</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">L’écosystème NestJS s’interface naturellement avec les SDK Anthropic, OpenAI ou Mistral. Les modules NestJS permettent d’isoler la logique d’orchestration d’agents, le streaming de réponses, le rate limiting et la facturation à l’usage par tenant.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Organisation.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Organisation.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Migration d&#39;un back-end Express ou legacy</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Quand un back-end Express, Sails ou même PHP devient ingérable, NestJS offre un cadre de migration progressive : module par module, en gardant l’ancien et le nouveau back-end en parallèle derrière une passerelle, jusqu’à bascule complète.</p> </div> </div>
Tout l'écosystème, pas juste NestJS

Les outils qu'on choisit autour de NestJS

Un projet NestJS moderne s'appuie sur tout un écosystème back-end TypeScript. L'équipe maîtrise les choix qui comptent pour chaque type d'API.

<div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/TechServer.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/TechServer.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">ORM TypeScript : Prisma, MikroORM, TypeORM, Drizzle</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">L’équipe maîtrise les quatre principaux ORM TypeScript et les déploie selon le projet. Prisma sur les nouveaux projets pour le confort et les migrations générées, MikroORM quand le mapping objet-relationnel poussé prime, Drizzle pour la performance brute proche du SQL, TypeORM sur les bases historiques. PostgreSQL comme base par défaut, Redis pour le cache et les jobs.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Integration.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Integration.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Files de jobs et événements</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">BullMQ pour les jobs asynchrones (envois d’emails, traitements lourds, agents IA), NATS ou Kafka pour les architectures événementielles. NestJS expose tous ces patterns via ses CQRS et microservices modules.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Optimisation.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Optimisation.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Authentification et autorisation</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Better Auth en premier choix sur les nouveaux projets pour son approche TypeScript-first et sa flexibilité (sessions, OAuth, magic links, 2FA, organisations multi-tenant). Auth.js sur les projets historiques, Keycloak pour les contextes entreprise. Les Guards NestJS centralisent la logique d’autorisation par utilisateur et par tenant pour qu’aucun endpoint n’oublie une vérification.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Target.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Target.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Documentation et contrats d&#39;API</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Swagger UI auto-généré depuis les decorators, schémas Zod partagés entre client et serveur via tRPC ou ts-rest, fixtures OpenAPI pour les tests d’intégration. Le contrat d’API est traité comme du code de production.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Performance.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Performance.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Tests et qualité</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">Jest avec @nestjs/testing pour les tests unitaires des providers, supertest pour les tests d’intégration des controllers, testcontainers pour faire tourner des dépendances réelles (PostgreSQL, Redis) en CI. Sentry pour la remontée d’erreurs en production.</p> </div> </div><div class="feature bg-white p-6 lg:p-10 in-data-[theme=dark]:bg-black" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="24:73"> <div class="mb-4 w-fit rounded-2xl [[data-theme=dark]_&#38;]:bg-yellow" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="25:66"> <span class="icon size-16 text-black" style="aspect-ratio:64/64;-webkit-mask-image:url(/@fs/data/app/src/assets/icons/Iteration.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg);mask-image:url(/@fs/data/app/src/assets/icons/Iteration.svg?origWidth=64&#38;origHeight=64&#38;origFormat=svg)" data-astro-cid-bvystztw data-astro-source-file="/data/app/src/components/icons/Icon.astro" data-astro-source-loc="23:6"></span> </div> <h3 class="mb-4 font-medium text-2xl lg:text-3xl" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="28:53">Observabilité et déploiement</h3> <div class="text-lg text-gray-500 leading-9 in-data-[theme=dark]:text-gray-300" data-astro-source-file="/data/app/src/components/sections/Feature.astro" data-astro-source-loc="31:4"> <p class="md">OpenTelemetry pour la trace distribuée, Pino pour les logs structurés, Prometheus pour les métriques. Déploiement Docker sur Scaleway, AWS, OVH ou cloud privé selon les contraintes du client. CI/CD GitHub Actions ou GitLab CI.</p> </div> </div>
Basés à Nantes, actifs partout en France

Des développeurs NestJS à Nantes pour des projets dans toute la France

L'équipe NestJS Lonestone travaille depuis la Halle 6 sur l'île de Nantes, juste au-dessus de La Cantine × French Tech Nantes. Les clients à Nantes, Rennes, Paris, Lyon, Bordeaux et au-delà bénéficient du même niveau d'exigence sur l'architecture : revues de code systématiques, tests automatisés sur dépendances réelles, documentation OpenAPI à jour, monitoring d'erreurs et de performance en production.

On discute de votre projet ?

Échange gratuit et sans engagement, directement avec un expert du sujet. Devis sous 48h.

Contacter l'équipe
de Lonestone
FAQ

Questions fréquentes

<details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Quelle différence entre une agence NestJS et une ESN NestJS ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">Une agence NestJS livre un back-end clé en main avec une équipe pluridisciplinaire (développeurs back-end, product managers, SRE) engagée sur le résultat. Une ESN NestJS met à disposition des développeurs au temps passé pour renforcer une équipe existante. Lonestone propose les deux modes : forfait avec équipe complète, et profils en régie via l’<a href="/offres/scale" class="md">offre Scale</a>.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Faut-il choisir NestJS ou Node.js sans framework pour un nouveau back-end ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">NestJS s’impose dès qu’une API doit grandir au-delà du MVP, intégrer plusieurs domaines métier ou exposer une matrice de permissions complexes. <a href="/technos/node-js" class="md">Node.js</a> seul (avec Fastify, Hono ou Express minimal) reste pertinent pour les microservices simples, les BFF, les scripts et les edge functions. Le choix se fait au cadrage selon la complexité métier attendue.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Quelle est l&#39;expérience de Lonestone en NestJS ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">Lonestone utilise NestJS en production depuis 2018, soit sept ans de pratique sur des API SaaS multi-tenant, des back-ends GraphQL fédérés, des plateformes RBAC et des intégrations IA. L’équipe maîtrise les modules, providers, guards, interceptors, l’approche code-first GraphQL, les microservices NestJS et les patterns d’intégration avec PostgreSQL, Redis, BullMQ et Kafka.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Lonestone propose-t-elle des développeurs NestJS en régie (TJM) ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">Oui. En plus du mode forfait, Lonestone propose des développeurs NestJS au temps passé via l’<a href="/offres/scale" class="md">offre Scale</a>. Ce mode convient aux clients qui ont déjà un product manager et un cadrage et cherchent à renforcer ponctuellement leur équipe back-end avec des profils NestJS seniors.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> NestJS supporte-t-il REST et GraphQL ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">Oui. NestJS est neutre sur le protocole d’exposition. L’équipe livre des API REST documentées via OpenAPI, des API GraphQL en code-first, des endpoints WebSocket pour le temps réel, ou plusieurs de ces protocoles dans la même application selon les besoins des clients front-end.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Quel ORM Lonestone utilise avec NestJS ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">L’équipe maîtrise les quatre principaux ORM TypeScript (Prisma, MikroORM, TypeORM, Drizzle) et choisit en fonction du projet. Prisma sur les nouveaux développements pour le confort et les migrations générées, MikroORM pour les domaines métier riches, Drizzle pour la performance brute proche du SQL, TypeORM sur les bases historiques. Le choix se cadre au démarrage et n’est pas un dogme.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Comment Lonestone traite-t-elle la sécurité d&#39;une API NestJS ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">L’équipe traite l’OWASP API Top 10 dès le premier sprint : authentification (sessions ou JWT correctement implémentés), permissions par utilisateur et par tenant via les Guards NestJS, validation systématique des inputs (class-validator ou Zod), rate limiting, audit log des actions sensibles. Un audit de sécurité ponctuel peut être mené séparément via l’<a href="/offres/audit" class="md">offre Audit</a>.</p> </div> </details><details class="group border-b border-gray-100 open:bg-gray-50 transition-colors duration-300" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="11:2"> <summary class="flex w-full cursor-pointer items-center gap-4 px-5 py-6 text-left list-none [&::-webkit-details-marker]:hidden" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="14:4"> <svg class="size-8 shrink-0 text-gray-400" viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="22:6"> <line x1="0" y1="16" x2="32" y2="16" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-180" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="23:8"></line> <line x1="16" y1="0" x2="16" y2="32" class="transition-transform duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] origin-center group-open:rotate-90" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="30:8"></line> </svg> <h3 class="text-lg md:text-xl lg:text-2xl text-gray-950 text-balance" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="38:75"> Le code NestJS produit reste-t-il la propriété du client ? </h3> </summary> <div class="faq-answer pl-18 pr-5 pb-6 text-base text-gray-600 leading-relaxed" data-astro-source-file="/data/app/src/components/sections/FAQItem.astro" data-astro-source-loc="42:83"> <p class="md">Oui. La codebase appartient au client et est livrée sur son dépôt Git. La stack volontairement standard (NestJS, TypeScript, PostgreSQL, Prisma) permet à n’importe quelle équipe Node.js de reprendre le projet en interne ou chez un autre prestataire.</p> </div> </details>