Jean Martin — Menuiserie sur mesure à Lyon

Artisans du bois depuis 2018, nous concevons et fabriquons des mobiliers haut de gamme entièrement personnalisés pour une clientèle exigeante. Ce dépôt contient le code source du site vitrine et de l'espace client digital de l'entreprise Jean Martin, conçu pour soutenir la croissance commerciale via le numérique.


Table des matières


Présentation du projet

Jean Martin Menuiserie est une entreprise artisanale fondée en 2018 à Lyon (69). Forte de 12 salariés qualifiés, elle se spécialise dans la création de mobilier sur mesure haut de gamme : cuisines, dressings, bibliothèques, agencements d'espaces professionnels et résidentiels.

Face à une clientèle de plus en plus connectée et à un objectif affirmé de croissance digitale, l'entreprise a lancé en 2024 la refonte complète de sa présence en ligne. Ce projet repose sur un site vitrine moderne, un catalogue interactif et un espace client sécurisé permettant de suivre l'avancement des commandes de fabrication.

Objectifs principaux :


Fonctionnalités

Site vitrine

Espace client

Administration


Prérequis

Avant d'installer le projet, assurez-vous de disposer des éléments suivants sur votre machine :


Installation

1. Cloner le dépôt

git clone https://github.com/jean-martin-menuiserie/site-web.git
cd site-web

2. Installer les dépendances

npm install

3. Configurer les variables d'environnement

Copiez le fichier d'exemple et renseignez vos propres valeurs :

cp .env.example .env

Éditez ensuite le fichier .env selon les instructions de la section Configuration ci-dessous.

4. Initialiser la base de données

npm run db:migrate
npm run db:seed

La commande db:seed insère les données initiales : catégories de produits, statuts de projet et compte administrateur par défaut.

5. Lancer le serveur en mode développement

npm run dev

Le site est alors accessible à l'adresse http://localhost:3000.

6. Construire pour la production

npm run build
npm run start

Utilisation

Accès au site vitrine

Une fois le serveur démarré, naviguez vers http://localhost:3000 pour consulter le site vitrine. Le formulaire de demande de devis est accessible depuis la page d'accueil et depuis chaque page de catégorie.

Accès à l'espace client

Les clients reçoivent leurs identifiants par courriel à la création de leur dossier. L'espace client est disponible à l'adresse /espace-client.

Accès à l'interface d'administration

L'interface d'administration est disponible à l'adresse /admin. Le compte administrateur créé lors du db:seed utilise les identifiants suivants en environnement de développement :

Identifiant : admin@jean-martin-menuiserie.fr
Mot de passe : Admin2024!

Ces identifiants doivent impérativement être modifiés avant tout déploiement en production.

Lancer les tests

npm run test

Pour les tests avec rapport de couverture :

npm run test:coverage

Configuration — variables d'environnement

Le fichier .env doit contenir les variables suivantes :

# Application
NODE_ENV=production
PORT=3000
APP_URL=https://www.jean-martin-menuiserie.fr
SESSION_SECRET=remplacez-par-une-chaine-aleatoire-de-64-caracteres

# Base de données PostgreSQL
DATABASE_URL=postgresql://utilisateur:motdepasse@localhost:5432/jean_martin_db

# Courriel transactionnel (SMTP)
SMTP_HOST=smtp.brevo.com
SMTP_PORT=587
SMTP_USER=votre-adresse@jean-martin-menuiserie.fr
SMTP_PASS=votre-cle-api-smtp

# Stockage des fichiers (AWS S3 ou compatible)
S3_BUCKET_NAME=jean-martin-assets
S3_REGION=eu-west-3
S3_ACCESS_KEY_ID=votre-cle-acces
S3_SECRET_ACCESS_KEY=votre-cle-secrete

# Analytique (optionnel)
ANALYTICS_TRACKING_ID=G-XXXXXXXXXX
Variable Obligatoire Description
NODE_ENV Oui Environnement d'exécution (development ou production)
DATABASE_URL Oui Chaîne de connexion PostgreSQL complète
SESSION_SECRET Oui Clé secrète pour le chiffrement des sessions
SMTP_HOST Oui Serveur SMTP pour les courriels transactionnels
S3_BUCKET_NAME Oui Nom du compartiment de stockage des fichiers
ANALYTICS_TRACKING_ID Non Identifiant de suivi pour les statistiques de trafic

Structure du projet

jean-martin-menuiserie/
├── public/                  # Fichiers statiques (images, polices, icônes)
│   ├── images/
│   └── fonts/
├── src/
│   ├── components/          # Composants réutilisables (en-tête, pied de page, galerie)
│   ├── pages/               # Pages du site vitrine
│   │   ├── index.tsx        # Page d'accueil
│   │   ├── realisations/    # Galerie et fiches de réalisations
│   │   ├── savoir-faire/    # Présentation des matériaux et procédés
│   │   ├── devis/           # Formulaire de demande de devis
│   │   └── blog/            # Articles et actualités
│   ├── app/                 # Espace client et administration
│   │   ├── espace-client/   # Tableau de bord client
│   │   └── admin/           # Interface d'administration
│   ├── api/                 # Points d'accès de l'interface de programmation
│   │   ├── devis.ts         # Traitement des demandes de devis
│   │   ├── auth.ts          # Authentification
│   │   └── projects.ts      # Gestion des projets
│   ├── lib/                 # Utilitaires partagés (base de données, courriel, stockage)
│   └── styles/              # Feuilles de style globales et thème
├── prisma/
│   ├── schema.prisma        # Schéma de la base de données
│   └── migrations/          # Historique des migrations
├── tests/                   # Tests unitaires et d'intégration
├── .env.example             # Modèle de fichier de configuration
├── next.config.js           # Configuration Next.js
├── tailwind.config.js       # Configuration Tailwind CSS
├── package.json
└── README.md

Contribution

Les contributions internes à l'équipe sont les bienvenues. Merci de respecter le processus suivant :

Conventions de branches

Préfixe Usage
feature/ Nouvelle fonctionnalité
fix/ Correction de bogue
content/ Mise à jour de contenu (textes, images)
chore/ Maintenance, mises à jour de dépendances

Processus de contribution

  1. Créer une branche à partir de develop :

    git checkout develop
    git pull origin develop
    git checkout -b feature/nom-de-la-fonctionnalite
    
  2. Développer en respectant les règles de style définies dans .eslintrc et prettier.config.js.

  3. Tester localement avant toute soumission :

    npm run lint
    npm run test
    
  4. Soumettre une demande de fusion vers develop avec une description claire des changements apportés.

  5. Relecture obligatoire par au moins un autre développeur avant fusion.

  6. Les fusions vers main sont réservées aux versions stables validées et déclenchent un déploiement automatique en production.

Style de code


Licence

Ce projet est la propriété exclusive de Jean Martin Menuiserie, entreprise artisanale immatriculée à Lyon. Le code source est confidentiel et destiné à un usage interne.

Toute reproduction, distribution ou utilisation du code en dehors de l'entreprise est strictement interdite sans autorisation écrite préalable.

© 2024 Jean Martin Menuiserie — Tous droits réservés.


Site conçu et développé pour accompagner la croissance digitale d'une entreprise artisanale lyonnaise qui place l'excellence du travail du bois au cœur de chaque projet.