Une application web moderne et intuitive pour la gestion des arrivées et départs des visiteurs en entreprise, développée avec Context Engineering et Claude Code.
Cette application permet de gérer efficacement les flux de visiteurs avec une interface utilisateur moderne, des animations engageantes et un système d'administration complet.
🔒 Conformité RGPD : Conçue spécialement pour aider les entreprises à respecter le Règlement Général sur la Protection des Données (RGPD). L'application offre une solution simple et sécurisée pour l'enregistrement des visiteurs, idéale pour déploiement sur tablette en réception d'entreprise.
- 🚪 Enregistrement d'arrivée : Formulaire intelligent avec pré-remplissage automatique
- 🚶 Signalement de départ : Interface simple pour l'enregistrement des sorties
- 🎉 Feedback utilisateur : Popup de confirmation avec confettis animés
- 📊 Dashboard administrateur : Statistiques en temps réel et gestion complète
- 🔒 Sécurité : Authentification par code PIN et conformité RGPD
- 🛠️ Module Debug : Outils de développement intégrés
Ce projet dispose d'une documentation exhaustive organisée en plusieurs fichiers :
- 📋 README.md - Vue d'ensemble et démarrage rapide
- 🚀 INSTALLATION.md - Guide d'installation détaillé
- 👥 GUIDE-UTILISATEUR.md - Manuel utilisateur complet
- 🧪 TESTS.md - Guide des tests et validation
- 🏛️ ARCHITECTURE.md - Architecture et design patterns
- 🔄 MIGRATION.md - Guide de migration entre versions
- 📝 CHANGELOG.md - Historique des versions
- 🔧 RESTART-PROCEDURE.md - Procédures de redémarrage
- 🤝 CONTRIBUTING.md - Guide de contribution
- 📋 PLANNING.md - Planification et roadmap
- ✅ TASK.md - Gestion des tâches
- 📊 tests/TEST_SUMMARY.md - Résumé des tests
💡 Conseil : Commencez par INSTALLATION.md pour une configuration optimale, puis consultez GUIDE-UTILISATEUR.md pour découvrir toutes les fonctionnalités.
- Node.js 18+
- npm ou yarn
# Clone du projet
git clone https://github.com/thibaultcholet/Context-Engineering-Intro.git
cd Context-Engineering-Intro/projets/gestion-visiteurs
# Installation des dépendances (initialise automatiquement l'application)
npm install
# Démarrage du serveur
npm start
# Ou en mode développement
npm run dev📋 Note importante : Le script npm install initialise automatiquement l'application en créant les fichiers de configuration nécessaires à partir des modèles.
L'application sera accessible sur http://localhost:3001
Après l'installation, personnalisez votre application :
-
Configuration : Éditez
data/config.jsonpour personnaliser :- Message d'accueil
- Délai d'anonymisation des données
- Taille maximale des fichiers
-
Logo : Ajoutez votre logo d'entreprise dans
public/images/logo.png -
Sécurité : Connectez-vous à l'admin avec le code PIN
123456et changez-le immédiatement
- Démarrez l'application :
npm start - Ouvrez http://localhost:3001 dans votre navigateur
- Accédez à l'administration via le bouton "Admin" (code PIN :
123456) - IMPORTANT : Changez immédiatement le code PIN par défaut dans "Paramètres → Sécurité"
gestion-visiteurs/
├── server.js # Serveur Express principal
├── package.json # Dépendances et scripts
├── src/ # Code source organisé (MVC)
│ ├── config/ # Configuration système
│ ├── controllers/ # Contrôleurs métier
│ ├── middleware/ # Middleware de sécurité
│ ├── models/ # Modèles de données
│ ├── repositories/ # Accès aux données
│ ├── routes/ # Définition des routes
│ ├── services/ # Services applicatifs
│ └── utils/ # Utilitaires (logger, etc.)
├── data/
│ ├── config.json # Configuration système
│ └── visitors.json # Base de données des visiteurs
├── public/
│ ├── index.html # Page d'accueil (visiteurs)
│ ├── admin.html # Interface d'administration
│ ├── app.js # Logique JavaScript principale
│ └── style.css # Styles CSS modernes
└── tests/ # Tests unitaires
├── app.test.js # Tests d'intégration
└── server.test.js # Tests serveur
Design moderne avec :
- Horloge en temps réel avec dégradé coloré
- Boutons d'action avec icônes Font Awesome
- Formulaires avec validation en temps réel
- Popup de confirmation avec confettis animés
Workflow utilisateur :
- Clic sur "Enregistrer mon arrivée"
- Remplissage du formulaire (avec validation)
- Soumission → Popup de célébration avec confettis
- Compteur de 5 secondes avec fermeture automatique
- Retour automatique à l'accueil
Authentification sécurisée :
- Code PIN de 4 à 6 chiffres (par défaut : 123456)
- Validation côté client et serveur
Dashboard organisé :
- 📊 Statistiques : Visiteurs actuels, aujourd'hui, 7 jours, 30 jours
- 👥 Visiteurs actuels : Liste en temps réel avec bouton de départ
- 📋 Historique : Tableau complet des visites passées
Paramètres avancés :
- ⚙️ Configuration : Message d'accueil, anonymisation
- 🔒 Sécurité : Changement de code PIN
- 🖼️ Logo : Upload du logo d'entreprise
- 🧪 Debug & Tests : Outils de développement
- Séparation des responsabilités : Controllers, Services, Repositories
- Middleware de sécurité : Helmet, CORS, Rate limiting
- Gestion d'erreurs centralisée avec Winston logging
- Validation des données avec Joi
- Tests unitaires avec Jest
- Hachage SHA-256 pour les codes PIN
- Validation stricte des entrées (regex, longueur)
- Protection CORS et headers de sécurité
- Rate limiting pour prévenir les attaques
- Réinitialisation automatique des formulaires (RGPD)
- Anonymisation programmée des données anciennes
Module Debug intégré :
- Bouton de test : Pré-remplissage automatique avec données fictives
- Génération de visiteurs : Création de données de test
- Nettoyage de base : Suppression de tous les visiteurs
- Contrôle localStorage : Affichage/masquage du bouton de test
Palette de couleurs moderne :
--primary-color: #4f46e5 /* Indigo moderne */
--secondary-color: #6366f1 /* Violet */
--success-color: #10b981 /* Vert émeraude */
--danger-color: #ef4444 /* Rouge corail */Composants stylisés :
- Boutons avec dégradés et animations
- Formulaires avec icônes intégrées
- Cartes avec ombres et hover effects
- Animations fluides (CSS transitions)
POST /api/visitors/check-in- Enregistrement d'arrivéePOST /api/visitors/check-out- Enregistrement de départGET /api/visitors- Liste des visiteursGET /api/visitors/stats- Statistiques
POST /api/admin/login- Connexion adminPOST /api/admin/config- Mise à jour configurationPOST /api/admin/change-pin- Changement de PINPOST /api/admin/anonymize- Anonymisation des donnéesPOST /api/admin/clear-visitors- Nettoyage debug
POST /api/check-in- Compatibilité V1POST /api/check-out- Compatibilité V1GET /api/admin/stats- Compatibilité V1
Le système inclut 5 jeux de données fictives pour les tests :
// Exemples de visiteurs de test
Jean Martin - Tech Solutions SARL
Sophie Lefebvre - Digital Consulting
Thomas Rousseau - Innovation Labs
Maria Garcia - Global Services Inc
Alexandre Durand - StartUp360Activation du mode test :
- Se connecter à l'admin (PIN : 123456)
- Aller dans Paramètres → Debug & Tests
- Cliquer sur "Afficher bouton de test"
- Le bouton apparaît sur le formulaire d'arrivée
{
"pinCodeHash": "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92",
"requirePinChange": true,
"welcomeMessage": "Bienvenue chez Société X",
"logoPath": "/images/logo_default.png",
"anonymizationDays": 30
}- Code PIN par défaut : 123456 (hash SHA-256)
- Message d'accueil : Personnalisable via l'admin
- Délai d'anonymisation : 30 jours par défaut
- Logo : Upload via interface admin
# Exécuter tous les tests
npm test
# Tests en mode watch
npm run test:watch
# Coverage des tests
npm run test:coverage
# Linting du code
npm run lintBouton de pré-remplissage :
- Sélection aléatoire de données fictives
- Animation de remplissage des champs
- Contrôlable depuis l'admin
Outils d'administration :
- Génération automatique de visiteurs test
- Nettoyage complet de la base
- Gestion de l'affichage du bouton de test
Winston Logger pour le serveur :
- Logs d'application dans
logs/app.log - Logs d'erreurs dans
logs/error.log - Niveaux : error, warn, info, debug
Console du navigateur :
- Countdown du timer de popup
- État des éléments DOM
- Étapes de redirection
- Erreurs de validation
Éditer les variables CSS dans public/style.css :
:root {
--primary-color: #votre-couleur;
--secondary-color: #votre-couleur;
/* ... */
}Modifier le tableau testData dans public/app.js :
const testData = [
{
nom: "Nouveau",
prenom: "Visiteur",
societe: "Nouvelle Société",
email: "visiteur@societe.com",
telephone: "01 23 45 67 89",
personneVisitee: "Contact Interne"
}
// ...
];-
Configuration :
- Modifier le code PIN par défaut
- Personnaliser le message d'accueil
- Upload du logo d'entreprise
-
Sécurité :
- Utiliser HTTPS en production
- Configurer un reverse proxy (nginx)
- Restreindre l'accès à l'admin
-
Performance :
- Compression gzip
- Cache des assets statiques
- Monitoring des performances
- 📧 Notifications email pour les arrivées/départs
- 📱 Application mobile avec QR codes
- 🔗 Intégration Active Directory pour l'authentification
- 📊 Rapports avancés avec graphiques
- 🌐 Multi-langues (i18n)
- 📷 Capture photo des visiteurs
- ✍️ Signature numérique pour la conformité
Ce projet a été développé avec Context Engineering et Claude Code, démontrant l'efficacité de cette approche pour le développement rapide d'applications complètes.
- Backend : Node.js, Express.js
- Frontend : HTML5, CSS3, JavaScript ES6+
- Design : Font Awesome, CSS Grid/Flexbox
- Sécurité : SHA-256, validation côté client/serveur
- Développement : Claude Code, Context Engineering
Développé avec ❤️ par Context Engineering et Claude Code