P.01Prototype interne
CarWatch
Cartographie des garages et stations-service, avec calcul d'itinéraire et de coût de carburant à partir des caractéristiques réelles du véhicule.
- Période
- Mars – avril 2026
- Rôle
- Conception du schéma de données, API TypeScript, interface cartographique.
- Stack
- TypeScript
- Express
- PostgreSQL
- React
- Vite
- Leaflet
- react-leaflet
- React Router
Repères
64
commits
dépôt git du projet, du 3 mars au 5 avril 2026
6
carburants typés en base
enum fuel_type_enum : SP95, SP98, E10, E85, Gazole, GPL
4
couches cartographiques
stations, garages, itinéraire, véhicule utilisateur
Le problème
Un automobiliste qui cherche du carburant ne veut pas le prix au litre le plus bas : il veut le coût total le plus bas, trajet compris. Cela suppose de connaître sa consommation, son carburant et sa position, puis de croiser ces trois données avec un réseau routier et des prix qui bougent tous les jours.
Ce qui a été construit
- 01
Une carte Leaflet avec couches séparées pour les stations, les garages, l'itinéraire calculé et la position du véhicule de l'utilisateur.
- 02
Une API Express en TypeScript strict découpée en routes, services et middlewares, avec gestion d'erreur centralisée et route de santé.
- 03
Un schéma PostgreSQL qui décrit le véhicule de l'utilisateur : plaque, carburant, puissance, consommation aux 100, marque, modèle.
- 04
Une recherche par plaque d'immatriculation qui préremplit ces champs.
- 05
Un espace compte, une liste de carburants suivis et une carte météo attachée à la position courante.
Architecture
Décisions techniques
Les règles métier vivent dans la base, pas seulement dans le code
Le type de carburant est un enum PostgreSQL, la plaque est validée par une expression régulière côté base, la puissance et la consommation portent des contraintes CHECK. Une API mal écrite, un script d'import ou une insertion manuelle ne peuvent pas produire un véhicule à 4 000 chevaux consommant 800 litres aux 100. La base reste cohérente même quand le code au-dessus ne l'est pas.
Migrations datées dès le premier jour
Le schéma initial et la migration d'ajout des champs d'authentification et de véhicule sont deux fichiers distincts, le second préfixé par sa date. Rejouer l'historique sur une base vierge donne exactement l'état courant. C'est ce qui rend une reprise de projet possible sans dump de production.
Leaflet plutôt qu'une carte propriétaire
Pas de clé d'API, pas de facturation à la vue de carte, pas de dépendance à la politique tarifaire d'un fournisseur. Les couches d'itinéraire et de marqueurs sont écrites à la main, ce qui coûte davantage de code au départ mais rend le rendu entièrement contrôlable.
Ce que ça démontre
Modélisation de données véhicule, contraintes d'intégrité, API typée, rendu cartographique sans dépendance propriétaire.