← Retour au portfolio

Étude de cas - application métier

FieldOps - gestion d'interventions terrain

Une plateforme qui remplace les informations dispersées par un flux unique : le bureau planifie, le technicien intervient depuis son mobile, puis le compte rendu est validé et archivé.

Objectif métier : réduire les ressaisies, fiabiliser le suivi et donner à chaque équipe la bonne information au bon moment - avec une sécurité et une traçabilité intégrées de bout en bout.

01
Brouillon
L'intervention est créée, pas encore planifiée.
02
Planifiée
Affectée à un technicien, un créneau réservé sans conflit.
03
En cours
Le technicien démarre depuis l'app mobile, sur site.
04
Terminée
Compte rendu, photos et signature capturés sur le terrain.
05
Validée
Le gestionnaire valide. L'intervention est verrouillée.

Cycle de vie réel d'une intervention - chaque transition est vérifiée côté API.

Trois écrans, mêmes données

Aperçu du back-office

Recréation HTML/CSS fidèle au back-office réel - mêmes composants, mêmes données de démonstration.

app.fieldops.local/dashboard
FieldOps
  • Dashboard
  • Planning
  • Interventions
  • Clients
  • Sites
  • Techniciens
Administration
  • Utilisateurs
  • Audit

Dashboardvendredi 24 juillet 2026

↻ Rafraîchir + Nouvelle intervention

Bonjour Administrateur - 1 intervention en retard · 1 compte rendu en attente de validation.

En retard
1
non démarrées
Urgences
0
à affecter
À valider
1
CR soumis
Aujourd'hui
0
0 technicien
Interventions du jour 0 interventions
Aucune intervention aujourd'hui
Le planning du jour est vide.
Comptes rendus à valider 1
d4bfbf16 - Sogeclim
TestTechnicien · Tour Alto
Brouillon Planifiée En cours Terminée Validée Annulée

Planning

20 juil. – 26 juil. 2026 Aujourd'hui 0 à planifier + Affecter une intervention
TechnicienLun 20Mar 21Mer 22Jeu 23Ven 24Sam 25Dim 26
KDKarim Diallo
TTestTechnicien
23:18
Sogeclim
Tour Alto
Brouillon Planifiée En cours Terminée Validée Annulée
← Interventions / d4bfbf16 · Terminée
Compte rendu

Attention correction du poste fait mais potentiellement formation au salarié pour ne plus avoir le problème.

Photos 1 photo
Signature
LFD
Signé le 19 juil. 2026, 15:23
Historique
  • Intervention créée
  • Affectée à TestTechnicien
Intervention
Type
Test
Priorité
Haute
Durée prévue
120 min
Planifiée
19 juil. 2026, 15:21
Client & site

Sogeclim

Tour Alto

Consignes d'accès

Badge à retirer à l'accueil. Local technique au R-1. Prévenir le PC sécurité.

Technicien
TestTechnicien

Connexion, planning, compte rendu terrain avec photo et signature - capturé sur un jeu de données de démonstration.

Trois surfaces, une seule source de vérité

Stack technique

Chaque couche appelle la même API, respecte les mêmes règles de rôle et de statut.

Api

ASP.NET Core (.NET 10)

  • Clean Architecture - Domain / Application / Infrastructure / Presentation
  • Entity Framework Core + SQL Server
  • FluentValidation, Serilog, Swagger
Back-office

React 19 + TypeScript

  • Vite, React Router v7, Tailwind CSS v4
  • Architecture feature-folder
  • Tests Vitest + Testing Library
Mobile

.NET MAUI

  • Clean Architecture en 4 projets distincts
  • CommunityToolkit.Mvvm, navigation Shell
  • 26 tests xUnit sur la couche métier
Pas juste un CRUD avec un login

Sécurité de l'authentification

Extraits d'implémentation, pas de promesses marketing.

Refresh token

Jamais stocké en clair - hashé (SHA-256) en base, pivoté à chaque utilisation, rejeu détecté et session révoquée en cas de vol suspecté.

Transport

Cookie HttpOnly / Secure côté web, invisible en JavaScript. Flux séparé en corps JSON pour le client mobile natif, sans affaiblir le web.

Autorisation

Vérifiée au niveau service, pas seulement au niveau controller - un rôle autorisé sur un endpoint n'est pas automatiquement autorisé sur chaque ressource qu'il expose.

Ce qui est construit

Fonctionnalités

Dashboard

KPIs calculés en temps réel - retards, urgences, comptes rendus à valider.

Clients, sites, techniciens

Gestion complète - création, modification, activation/désactivation.

Planning

Grille hebdomadaire par technicien, détection de conflit d'horaire côté serveur.

Photos & signature

Capturées sur le terrain depuis le mobile - signature dessinée, pas une photo de papier.

Journal d'audit

Qui a fait quoi, quand, avant/après - sur chaque action sensible.

Contrôle d'accès par rôle

Appliqué côté API, reflété côté interface - jamais l'inverse.

Pas des choix par défaut

Mon rôle et mes décisions

Trois choix d'architecture qui n'étaient pas les plus simples, mais les plus justes.

Deux flux d'auth, pas un seul flexible

Plutôt qu'un endpoint unique acceptant cookie ou JSON selon le client, deux controllers séparés qui partagent la même logique métier. Un endpoint hybride aurait affaibli la garantie de sécurité du flux web pour accommoder le mobile.

Dé-duplication des refresh concurrents

Le refresh token est à usage unique (rotation). Si deux requêtes échouent en 401 au même instant, elles doivent attendre le même rafraîchissement - sinon la seconde invalide la session entière. Implémenté à l'identique côté web et mobile.

Mobile en 4 projets, pas en dossiers

Domain/Application séparés d'Infrastructure permet de tester toute la logique métier mobile (26 tests) sans dépendre du SDK MAUI - la suite tourne sur n'importe quelle machine avec juste le SDK .NET.

FieldOps illustre ma manière de transformer un processus métier complet en un écosystème cohérent - serveur, navigateur et téléphone - sans perdre de vue les utilisateurs ni la maintenabilité.

Vous avez un besoin similaire ? Parlons-en →