Mission freelance · 2026

Guinot — Application Terrain (PWA)

Une application installable, utilisable hors connexion, qui donne aux techniciens de terrain leurs interventions, leur pointage et leurs contrôles qualité depuis un téléphone.

Rôle Conception & développement full-stack
Période 2026
Secteur Services techniques / gestion de parc
Contexte Mission freelance
01

Le contexte

Les techniciens interviennent sur des sites où la connexion mobile est aléatoire — sous-sols, zones industrielles, chantiers. Les outils de gestion de parc existants sont pensés pour un poste de bureau : lourds sur mobile, inutilisables sans réseau, et ils demandent un mot de passe que personne n'a envie de saisir sur un écran de téléphone avec des gants.

L'application vient se poser au-dessus du logiciel de gestion de parc déjà en place plutôt que le remplacer : elle en récupère les données et apporte la couche terrain qui manquait — interventions, pointage, paniers journaliers et contrôles qualité.

02

Ce que j'ai construit

Gestion des interventions

affectation, catégories, tâches à cocher, photos avant/après, historique complet par équipement.

Pointage et paniers journaliers

saisie du temps et des indemnités au fil de la journée, consolidée côté administration.

Contrôles qualité

grilles de notation remplies sur site, avec suivi dans le temps.

Parc et équipements

inventaire, localisation cartographique, rattachement des interventions.

Imports configurables

reprise de fichiers Excel/CSV avec correspondance de colonnes paramétrable, sans intervention technique.

Back-office

utilisateurs, rôles, catégories, journal d'activité, vues d'impression.

Notifications push

nouvelles affectations et rappels envoyés directement sur le téléphone.

03

Architecture & choix techniques

Le choix structurant est celui d'une PWA plutôt que d'une application native. Le parc de téléphones est hétérogène, et passer par les stores aurait imposé un cycle de validation à chaque correctif pour une population d'utilisateurs réduite. Une PWA s'installe depuis un lien, se met à jour instantanément, et fonctionne hors connexion via un service worker.

L'authentification se fait par lien magique : le technicien reçoit un lien, clique, et sa session est ouverte. Pas de mot de passe à mémoriser ni à réinitialiser — ce qui supprime la première cause de tickets de support sur ce type d'outil.

L'API est versionnée dès le départ (/api/v1) : une application installée sur des téléphones ne se met pas à jour de façon synchronisée, il faut donc pouvoir faire évoluer le contrat sans casser les clients encore en circulation.

Les autorisations sont définies côté serveur par des politiques d'accès, et rejouées côté client avec la même grammaire de règles, pour que l'interface n'affiche jamais une action que le serveur refusera.

04

Les défis techniques

Le hors-ligne. Mise en cache applicative et page de repli dédiée pour que l'application reste utilisable sans réseau, puis resynchronisation à la reconnexion.

Le pont avec l'existant. L'application s'intègre à un logiciel tiers de gestion de parc : il a fallu absorber son modèle de données sans le dupliquer ni le contredire.

Trois métiers, trois interfaces. Administrateur, responsable et technicien n'ont ni les mêmes écrans ni les mêmes droits, dans une base de code unique.

Des imports imprévisibles. Les fichiers fournis n'ont jamais deux fois la même structure : d'où un système de correspondance de colonnes configurable, avec journal des imports et rejeu possible.

L'ergonomie terrain. Interface pensée pour une utilisation à une main, en extérieur, avec des cibles tactiles larges et un parcours de saisie court.

05

Stack technique complète

Back-end

Laravel 12 PHP 8.2 API REST versionnée Sanctum Auth par lien magique Politiques d'accès

Front-end

Vue 3.5 TypeScript Vuetify 3 Pinia vue-i18n CASL

Mobile & terrain

PWA Service worker Mode hors-ligne Notifications push Mapbox

Outillage

Vite 7 Import Excel/CSV S3 Pest / PHPUnit

Un projet similaire en tête ?

Parlons de votre besoin — cadrage, devis et délais sous 24 h.