Retour aux projets
Projet personnel - Développeur Fullstack2026

ClientFlow - CRM Fullstack

CRM fullstack pour gérer entreprises, contacts et opportunités commerciales. Monorepo React + Django REST entièrement dockerisé, avec authentification JWT, tests et CI.

Contexte et Objectifs

ClientFlow est un CRM que j'ai conçu pour piloter un cycle commercial : entreprises, contacts et opportunités (pipeline de deals). Je l'ai construit comme un monorepo fullstack — un frontend React 19 (Vite) et une API REST Django, le tout dockerisé (un seul « docker compose up » lance PostgreSQL, le backend et le frontend). J'ai soigné l'architecture backend (une app par domaine, logique découpée en packages models / serializers / views), sécurisé l'API avec une authentification JWT et un modèle utilisateur custom, couvert le code par des tests pytest, et mis en place une CI GitHub Actions qui rejoue tests et lint à chaque push.

Fonctionnalités Principales

API REST structurée

API Django REST Framework organisée par domaine : ViewSets et routeur pour un CRUD complet (entreprises, contacts, deals), serializers assurant un contrat JSON stable côté frontend, et filtres par relation. Le code est découpé en packages (models, serializers, views) pour rester lisible.

Authentification JWT

Authentification par tokens JWT (access / refresh) avec modèle utilisateur custom. Côté React : page de login, routes protégées, envoi automatique du token et renouvellement transparent à l'expiration. L'API est fermée aux requêtes non authentifiées.

Dockerisé & reproductible

Monorepo entièrement conteneurisé : PostgreSQL, Django et Vite orchestrés par docker-compose. La base est migrée et peuplée automatiquement au démarrage — « ça marche sur ma machine » disparaît.

Tests & Intégration Continue

Suite de tests pytest (modèles, API, authentification) et pipeline CI GitHub Actions qui exécute tests et lint à chaque push et pull request — une preuve continue que le projet reste sain.

Défis Techniques

  • Faire évoluer un frontend à données mockées vers une vraie API sans réécrire les composants
  • Structurer une API REST maintenable (découpage par domaine et par responsabilité)
  • Mettre en place une authentification JWT de bout en bout (backend et frontend)
  • Rendre l'environnement de développement entièrement reproductible via Docker

Résultats et Accomplissements

  • Monorepo fullstack lancé d'une seule commande (docker compose up)
  • API REST sécurisée par JWT avec modèle utilisateur custom
  • Bascule des données mockées vers l'API sans toucher aux composants (couche services)
  • Tests pytest et CI GitHub Actions au vert à chaque commit

Technologies

React 19ViteReact RouterDjango 5Django REST FrameworkPostgreSQLJWTDockerdocker-composepytestGitHub Actions