Stage 2ᵉ année · 8 semaines 2025 Terminé

Stage · Développeur Full-Stack

Deuxième stage professionnel réalisé en fin de BTS SIO. Développement d'une application de gestion interne en React avec une API REST Node.js, de la conception à la mise en production sur serveur Linux. Montée en compétence sur l'architecture full-stack complète.

ReactNode.jsExpress MySQLLinuxNginxJest

Contexte professionnel

Entreprise Entreprise ABC
Localisation Lille, 59
Durée 8 semaines
Période Printemps 2025
Poste Dev Full-Stack

Captures d'écran

⚛️ Application React développée Remplacer par <img src="img/stage2/app.png">
SPA React — interface principale
🔌 Documentation API REST Remplacer par <img src="img/stage2/api.png">
Swagger / documentation des endpoints

Déroulement du stage

Ce second stage s'est révélé bien plus exigeant que le premier : on m'a confié la responsabilité de développer une application complète de bout en bout, de la modélisation de la base de données au déploiement en production. L'application est un outil de gestion interne destiné aux équipes opérationnelles de l'entreprise.

Le contexte technique était radicalement différent du stage précédent : exit PHP/Laravel, place au stack JavaScript full-stack avec React côté frontend et Node.js + Express côté backend. Cette transition technologique a demandé une montée en compétence rapide sur un écosystème que je connaissais partiellement.

Le projet a suivi un cycle de vie complet : recueil des besoins avec les utilisateurs finaux, conception des maquettes, modélisation de la base de données, développement itératif, mise en place de tests unitaires et d'intégration, puis déploiement sur un serveur Linux configuré avec Nginx et PM2.

Ce stage m'a convaincu que je voulais me spécialiser dans le développement full-stack JavaScript. La cohérence du langage entre frontend et backend, combinée à la puissance de l'écosystème npm, offre une productivité remarquable.

Ce que j'ai fait

Conception et développement d'une SPA React
Architecture complète du frontend React : découpage en composants réutilisables, routing avec React Router, gestion de l'état global avec Context API et hooks personnalisés. Interface responsive adaptée aux usages mobile des opérateurs terrain.
Création d'une API REST Node.js / Express
Développement des endpoints REST, gestion de l'authentification JWT, middleware de validation des données avec Joi et gestion centralisée des erreurs. Documentation automatique avec Swagger/OpenAPI.
Modélisation et gestion de la base de données MySQL
Conception du MCD, écriture des migrations avec Knex.js, optimisation des requêtes et mise en place d'index pertinents. Gestion des transactions pour les opérations critiques.
Tests unitaires et d'intégration
Mise en place de Jest pour les tests unitaires et Supertest pour les tests d'intégration de l'API. Couverture de code supérieure à 70% sur les modules métier critiques.
Déploiement sur serveur Linux
Configuration d'un serveur Ubuntu : installation de Nginx comme reverse proxy, démarrage de l'application Node.js avec PM2 (daemon + auto-restart), mise en place des certificats SSL et configuration du pare-feu UFW.

Technologies utilisées

React 18Frontend SPA
Node.jsBackend
Express 4API REST
MySQL 8Base de données
JestTests
NginxReverse proxy
PM2Process manager
Ubuntu ServerHébergement
Git / GitHubVersioning
JWTAuth

Compétences développées

Autonomie sur un projet complet
Prendre en charge un projet de A à Z — de la conception à la production — m'a donné une vision globale du cycle de développement que les projets scolaires ne permettent pas toujours d'acquérir. Gérer les priorités, anticiper les blocages et livrer dans les délais sont des compétences que ce stage a vraiment renforcées.
Administration Linux et déploiement
Configurer un serveur de production pour la première fois est une expérience formatrice. Comprendre le rôle de Nginx comme reverse proxy, gérer les permissions Linux et sécuriser l'accès SSH m'a donné confiance pour les déploiements futurs.
Importance des tests automatisés
Écrire des tests avant même de coder les fonctionnalités (TDD partiel) a changé ma façon de concevoir le code. Les tests m'ont sauvé plusieurs fois lors de refactorisations en détectant des régressions immédiatement.