Capsulorama v2
Projet

Capsulorama v2

Refonte complète d'un e-commerce de capsules de muselets, de Django 1.3 à Django 5.2, avec migration transparente des données legacy.

Capsulorama est un site e-commerce spécialisé dans la vente de capsules de muselets de champagne et vins mousseux, en ligne depuis 2011. La v2 est une réécriture complète from scratch : nouveau projet Django, nouveau serveur, nouvelle architecture — tout en préservant 15 ans de données utilisateurs, de capsules et de médias.

Technologies utilisées

  • Framework : Django 5.2 (Python 3.13)
  • Base de données : PostgreSQL
  • Frontend : Django Templates, Bootstrap 5, HTMX
  • Tâches asynchrones : Celery + Redis (emails, notifications admin)
  • Paiement : Stripe + PayPal
  • Email : Brevo
  • Médias : ~160 000 fichiers migrés depuis l'ancien serveur
  • Déploiement : Gunicorn (socket) + Nginx sur VPS Hostinger
  • SSL : Certbot
  • Formulaires : django-crispy-forms + django-recaptcha (reCAPTCHA v3)
  • Export données : django-import-export

Migration legacy

  • Réécriture complète depuis Django 1.3 / Python 2.7
  • Export, nettoyage et transformation manuelle des données (utilisateurs, capsules, paniers en cours)
  • Migration des mots de passe : implémentation d'un hasher de compatibilité SHA1 permettant aux utilisateurs existants de se connecter sans réinitialisation, avec upgrade automatique vers PBKDF2 à la connexion suivante
  • Transfer de ~160 000 fichiers médias via rsync

Espace d'administration


L'application dispose d'un espace d'administration Django personnalisé permettant :

  • Gestion du catalogue : capsules unitaires et génériques, thèmes, vignerons
  • Gestion des commandes : suivi des statuts, détail des lignes, historique
  • Gestion des membres : profils utilisateurs en inline
  • Planification : tâches Celery Beat gérées via django-celery-beat

Fonctionnalités principales

  • Catalogue : navigation par thème, vigneron, recherche, nouveautés, ajouts récents
  • Panier : gestion session (anonyme) avec transfert en base à la connexion
  • Tunnel de commande : intégration Stripe Checkout et PayPal, confirmation par email
  • Authentification : connexion en deux étapes (email puis mot de passe) via HTMX, inscription avec reCAPTCHA v3, réinitialisation de mot de passe
  • Redirections SEO : règles Nginx pour préserver le référencement de l'ancienne structure d'URLs
  • Multi-domaines : capsulorama.com et capsulorama.fr (redirection 301)
  • Emails : confirmation de commande, réinitialisation de mot de passe, alertes admin (tentatives de connexion suspectes)
  • Moteur de recherche avancé maison

Moteur de recherche


Le cœur du projet est un moteur de recherche maison, conçu pour répondre aux spécificités du catalogue capsules.

  • Recherche multi-mots : chaque mot est traité indépendamment — "cot sud" trouve "Coteaux du Sud Épernay" en combinant les résultats par champ
  • Tolérance aux accents : suppression des accents côté requête (unicodedata) et utilisation de l'extension PostgreSQL unaccent côté base, pour que "epernay" matche "Épernay"
  • Tolérance aux caractères spéciaux : nettoyage regex avant tokenisation ("gene * ! rouge" → ["gene", "rouge"])
  • Recherche dans plusieurs champs simultanément : marque, description, référence
  • Autocomplete HTMX : preview en temps réel en trois sections (marques, capsules, thèmes), sans rechargement de page
  • Page de résultats : filtres combinables par thème, marque et référence exacte

Mes commandes capsulorama