ARTDANTECH
Étude de casApplication sécuriséeParlons de votre projet

Argent Bank, Phase 1 Authentification

Comment nous avons transformé des maquettes statiques en application bancaire sécurisée — avec authentification, profil utilisateur et gestion d'état centralisée, prête à accueillir les prochaines fonctionnalités.

Vue d'ensemble

Dans la banque, il n'y a pas de droit à l'erreur. Un formulaire de connexion qui plante, un token mal géré, une route non protégée — et c'est la confiance de l'utilisateur qui s'effondre. Ce projet consistait à construire un socle applicatif où la sécurité n'est pas une couche ajoutée après coup, mais le fondement même de l'architecture.

Le projet

Développer une application React sécurisée avec authentification complète, profil utilisateur éditable et état global centralisé via Redux.

Le client

Argent Bank, néobanque en ligne. Un contexte où chaque faille technique se traduit directement en perte de confiance — et en perte de clients.

Le problème

Des maquettes statiques sans logique applicative. Pas de session, pas de routes protégées, pas de gestion d'état. Tout était à construire — sur un terrain où la moindre erreur est visible.

L'objectif

Poser une Phase 1 solide, sécurisée et maintenable — suffisamment robuste pour servir de fondation à toutes les fonctionnalités bancaires à venir.

Ce projet ne consistait pas à relier un formulaire à une API. Il fallait construire une logique d'application complète dans un contexte où la fiabilité n'est pas un bonus — c'est un prérequis.


Résultats concrets

Authentification sans faille

Connexion, déconnexion, gestion du token et récupération du profil — un flux complet, testé et fiable dans tous les cas d'usage, y compris les erreurs.

Routes blindées

Les pages sensibles sont inaccessibles sans session valide. Pas de contournement possible, pas d'écran blanc — une redirection propre à chaque fois.

Un état global limpide

Redux Toolkit centralise l'authentification et le profil dans une architecture lisible. Chaque donnée a sa place, chaque flux est traçable.

Un socle prêt pour la Phase 2

L'architecture est conçue pour accueillir les transactions, les comptes multiples et les prochaines fonctionnalités — sans refactoring structurel.


Avant / Après

Axe
Avant
Après
Interface
Des écrans statiques : visuellement corrects, mais sans aucun comportement applicatif réel. Un clic ne fait rien.
Une application React connectée à l'API avec des flux réels : login, navigation conditionnelle, affichage dynamique du profil.
Sécurité
Aucune logique de session. Aucune protection d'accès. N'importe qui peut voir n'importe quelle page.
Authentification complète, token géré proprement, routes protégées avec redirection automatique. La sécurité est structurelle, pas cosmétique.
Gestion d'état
Aucune centralisation. Les données utilisateur n'existent nulle part dans le front.
Redux Toolkit avec un store clair : état auth, état user, actions typées, flux prévisibles et debuggables.
Expérience
Des maquettes figées. Pas de retour en cas d'erreur, pas de feedback utilisateur, pas de gestion des cas limites.
Des flux crédibles avec messages d'erreur clairs, états de chargement et transitions cohérentes. Une app qui se comporte comme un vrai produit.

Le problème

Construire une application bancaire — même limitée à l'authentification — impose un niveau d'exigence que la plupart des projets front ne rencontrent jamais. Ici, chaque détail technique a une conséquence directe sur la confiance de l'utilisateur.

Concrètement, il fallait résoudre quatre défis avec zéro marge d'erreur :

  • Une authentification qui ne plante pas. Dans une app bancaire, un formulaire de connexion qui échoue silencieusement ou qui affiche un message cryptique, c'est un utilisateur perdu — et potentiellement un client qui part à la concurrence.
  • Des routes réellement protégées. Pas un simple if en JavaScript. Une protection structurelle qui redirige proprement, gère l'expiration du token et reste cohérente avec l'état global.
  • Un état global qui ne ment pas. Dans une app où l'utilisateur voit son profil et ses données sensibles, l'état du store doit refléter la réalité à chaque instant. Un décalage entre le front et le back, même temporaire, crée de la méfiance.
  • Un socle extensible. Cette Phase 1 n'est qu'un début. L'architecture devait supporter l'ajout futur de transactions, de comptes multiples et de nouvelles fonctionnalités — sans tout réécrire.

C'est la combinaison de ces exigences qui rend ce projet plus complexe qu'il n'y paraît — et qui sépare un exercice technique d'une vraie construction de produit sécurisé.


Notre approche

Avant d'écrire une ligne de code, nous avons commencé par lire — rigoureusement — le contrat back-end.

Phase 0 — Comprendre le terrain

  • Lecture exhaustive de la documentation Swagger : endpoints, contraintes de token, comportements en cas d'échec
  • Modélisation des flux critiques : connexion > token > profil > édition > déconnexion
  • Identification des cas limites : token expiré, requête échouée, navigation directe sur une route protégée

Architecture — Séparer les responsabilités

  • Store Redux structuré en deux slices clairs : auth (session, token) et user (profil, édition)
  • Couche réseau isolée avec gestion centralisée des erreurs et du token
  • Composants UI découplés de la logique métier — chaque couche fait une seule chose

Authentification — Fiabilité avant tout

  • Formulaire de connexion avec validation et retours d'erreur explicites
  • Récupération et stockage sécurisé du token
  • Flux de déconnexion qui nettoie proprement l'état et redirige
  • Gestion des erreurs réseau avec messages compréhensibles pour l'utilisateur

Routes protégées — Sécurité structurelle

  • Guard component qui vérifie la session avant chaque rendu
  • Redirection automatique vers le login en l'absence de token valide
  • Cohérence garantie entre l'état Redux et la navigation — pas de page fantôme

Profil utilisateur — Premier flux applicatif vivant

  • Récupération des informations utilisateur après authentification
  • Édition du pseudo avec mise à jour immédiate dans le store et sur l'API
  • Retour visuel clair après chaque action (succès, erreur, chargement)

Dans un contexte bancaire, la qualité ne se mesure pas aux features visibles. Elle se mesure à ce qui se passe quand les choses tournent mal : un token expiré, une requête qui échoue, une navigation inattendue. C'est là que la rigueur de l'architecture fait la différence.


Stack technique

  • React 18
  • React Router 6
  • Redux Toolkit
  • Wrapper réseau centralisé (Axios/Fetch)
  • Vite
  • ESLint, Prettier (qualité de code)
  • Jest, React Testing Library (tests unitaires et d'intégration)
  • MSW (mock API pour les tests)
  • Git / GitHub

Le résultat

Le résultat est une Phase 1 qui ne ressemble pas à une Phase 1. Pas de prototype fragile, pas de « on verra plus tard pour la sécurité ». Une application complète, testée et structurée — prête à accueillir les fonctionnalités bancaires suivantes sans remettre en question ses fondations.

  • Une authentification complète qui gère les cas normaux et les cas d'erreur
  • Des routes protégées qui ne laissent rien passer
  • Un profil utilisateur éditable avec feedback immédiat
  • Un état global centralisé, typé et debuggable
  • Un code testé, documenté et prêt à être repris par une autre équipe
  • Une architecture conçue dès le départ pour supporter la Phase 2

L'application ne se contente pas de fonctionner. Elle inspire confiance — et dans la banque, c'est la seule métrique qui compte.


Ce que ce projet révèle

Ce projet démontre une compétence critique : savoir construire un front-end sécurisé dans un contexte où la moindre faille technique se traduit en perte de confiance utilisateur. Authentification, gestion d'état, routes protégées et architecture extensible — le tout avec la rigueur qu'exige un environnement bancaire.

Si vous construisez une application qui gère des données sensibles, qui nécessite une authentification robuste ou qui doit inspirer confiance dès la première interaction — c'est exactement ce niveau de rigueur que nous apportons.