Aller au contenu
Tous les projets

Web · Projet personnel

ZS Fragrance

Une boutique de parfums de niche tenue comme une conciergerie

Capture d'écran de ZS Fragrance

Boutique sans panier, on réserve un parfum et on en discute en direct avec la conciergerie. API NestJS et front Next.js, à essayer des deux côtés.

Le concept

Pour des parfums de niche vendus en petites quantités, un panier classique pose problème : deux clients peuvent payer le même dernier flacon. ZS Fragrance fonctionne comme une conciergerie. On réserve un parfum, ce qui ouvre une conversation avec la boutique ; on y ajoute d’autres parfums, on convient de la remise et du paiement (liquide, PayPal, virement), puis la conciergerie valide la vente.

Ce que fait l’application

  • Catalogue avec filtres et recherche par nom, maison ou note olfactive ; fiches avec contenances, pyramide olfactive, accords et avis
  • Conversations en temps réel (Socket.io) : une demande peut regrouper plusieurs parfums, la conciergerie peut en proposer d’autres
  • Validation de vente « tout ou rien » dans une transaction : si un flacon vient d’être vendu ailleurs, rien n’est décompté. Quand un stock tombe à zéro, l’article est retiré des autres demandes et ajouté à la wishlist des clients concernés
  • Wishlist avec alerte de retour en stock, avis clients modérés, comptes avec vérification du téléphone par SMS
  • Administration : tableau de bord, produits et contenances, stocks, catégories, accords, utilisateurs, suivi des wishlists, questionnaire du premier message, raccourcis de réponse, files d’e-mails

Architecture

Trois conteneurs derrière le reverse proxy Caddy du serveur : le front Next.js, qui relaie les appels à l’API ; l’API NestJS en lecture seule ; PostgreSQL, dont le schéma est posé par les migrations Prisma et les données de démonstration par un script de chargement au premier démarrage.

En images

Chaque parfum a ses contenances, avec leur prix, le prix constaté ailleurs et leur stock, sa pyramide olfactive et ses accords.
Chaque parfum a ses contenances, avec leur prix, le prix constaté ailleurs et leur stock, sa pyramide olfactive et ses accords.
Réserver ouvre une conversation ; un court questionnaire (remise en main propre ou livraison, paiement) rédige le premier message.
Réserver ouvre une conversation ; un court questionnaire (remise en main propre ou livraison, paiement) rédige le premier message.
La conciergerie répond avec des raccourcis, propose d'autres parfums dans la sélection, puis valide la vente, qui décompte le stock.
La conciergerie répond avec des raccourcis, propose d'autres parfums dans la sélection, puis valide la vente, qui décompte le stock.
Le stock se gère par contenance ; une remise en stock prévient les clients qui attendaient le parfum dans leur wishlist.
Le stock se gère par contenance ; une remise en stock prévient les clients qui attendaient le parfum dans leur wishlist.