LPM

Page d'accueil Luxe Passion Moteur

Luxe Passion Moteur est une plateforme full-stack de vente de véhicules qui combine un site vitrine public et un backoffice d'administration. J'ai conçu et développé le produit de bout en bout avec Next.js App Router, de l'UX et des API routes jusqu'au stockage et aux tests.

La partie publique met en avant les véhicules disponibles et vendus, tandis que le backoffice fournit des workflows CRUD authentifiés, l'upload d'images vers S3 et un traitement de formulaires structuré pour fiabiliser les données.

Détail véhicule LPM sur mobile premier écran

L'espace d'administration a été pensé pour des utilisateurs non techniques: création et édition rapides des annonces, gestion média contrôlée et formatage prévisible des données entre l'UI et les route handlers backend.

  • Rôle: développement full-stack (UI/UX, API, MongoDB, intégration S3, tests E2E).
  • Workflows admin: création, mise à jour et suppression des annonces véhicules.
  • Formulaire avancé: upload multi-images avec prévisualisation et réordonnancement côté admin.
  • Hardening: stratégie de noms d'images uniques pour éviter les collisions à l'upload.
  • Couche d'auth: accès admin protégé via route d'authentification et flux API dédié.
  • Livraison: itérations validées par des tests end-to-end sur les parcours clés.

Technologies

Next + React

stack frontend moderne

AWS S3 + CDN

hébergement et diffusion des images

MongoDB

stockage des annonces et contenus

Tailwind

interface responsive mobile-first

  • Framework: Next.js 15 (App Router) + React 18.
  • UI stack: Tailwind CSS avec composants Mantine et shadcn.
  • Stockage: MongoDB pour les annonces, AWS S3 pour les images.
  • Backend: route handlers App Router pour les endpoints admin et public.
  • Email: intégration Nodemailer pour les flux de contact transactionnels.
  • Qualité: tests E2E Cypress couvrant le backoffice et les formulaires.
Page des annonces LPM sur desktop
  • Interface responsive pour desktop et mobile.
  • Pipeline d'images basé sur AWS pour les visuels produits.
  • Modèle de données MongoDB pour gérer les annonces véhicules.
  • Flux de contact intégré pour les leads entrants.
  • Dashboard admin avec opérations de création, mise à jour et suppression.
  • Accès backoffice sécurisé avec authentification.
  • API route handlers dans l'App Router pour séparer public et admin.
  • Parsing et coercion de FormData pour les tableaux et champs numériques.
  • Couverture E2E sur l'authentification, la création d'annonces et l'upload.

Décisions techniques

  • Séparation public/admin: découpage clair entre pages vitrine et routes de gestion internes.
  • Normalisation FormData: logique backend de formatage des tableaux et coercion numérique avant persistance.
  • Résilience upload: génération de noms uniques pour éviter l'écrasement d'images sur S3.
  • Fiabilité: scénarios Cypress utilisés comme filet de régression pendant les itérations.

Captures d'écran (desktop)

Page d'accueil LPM sur desktop
Page d'accueil (desktop)
Page des annonces LPM sur desktop
Annonces véhicules (desktop)
Page services LPM sur desktop
Page services (desktop)
Page contact LPM sur desktop
Page contact (desktop)

Captures d'écran (mobile)

Page d'accueil LPM sur mobile
Page d'accueil (mobile)
Menu mobile LPM
Menu de navigation (mobile)
Page des annonces LPM sur mobile
Annonces véhicules (mobile)
Détail véhicule LPM sur mobile premier écran
Détail véhicule #1 (mobile)
Détail véhicule LPM sur mobile second écran
Détail véhicule #2 (mobile)
Page services LPM sur mobile
Page services (mobile)
Page contact LPM sur mobile
Page contact (mobile)

© 2024 A-xel