Rassaby Ludovic 35cad7998d 🚀 Release v1.1.0 - Application en Production avec Monitoring
 Nouvelles fonctionnalités:
- 🌐 Application déployée et accessible en ligne (http://141.253.118.141:3000)
- 📊 Dashboard Grafana complet avec métriques en temps réel
- 🚀 Configuration de production avec docker-compose.prod.yml
- 🏗️ Infrastructure robuste avec monitoring Prometheus + Grafana
- 📈 Métriques personnalisées (CPU, mémoire, requêtes, réservations)

🔧 Améliorations techniques:
- Backend FastAPI avec métriques Prometheus intégrées
- Configuration Docker optimisée pour la production
- Health checks pour tous les services
- Variables d'environnement sécurisées
- Configuration Ansible pour déploiement automatisé

📚 Documentation:
- README complet mis à jour avec liens de production
- CHANGELOG détaillé pour la version 1.1.0
- Notes de release complètes
- Guide de déploiement en production

🎯 Statut: Stable, déployé et accessible en ligne
2025-10-17 15:05:09 +04:00
2025-10-13 14:03:21 +04:00
2025-10-13 14:03:21 +04:00
2025-10-13 14:03:21 +04:00
2025-10-13 14:03:21 +04:00

🏢 Dockezr - Système de Réservation de Salles

Release Docker Monitoring Production

Système complet de réservation de salles pour le centre de formation Expernet, développé avec FastAPI (Backend), Next.js (Frontend), PostgreSQL (Base de données) et Prometheus + Grafana (Monitoring), orchestré avec Docker Compose.

🌐 Application en Production

🚀 Accès direct à l'application :

🛠️ Stack Technique

  • Backend : FastAPI (Python 3.11) avec AsyncPG
  • Frontend : Next.js 14 + TypeScript + Tailwind CSS
  • Base de données : PostgreSQL 16
  • Monitoring : Prometheus + Grafana + Node Exporter
  • Containerisation : Docker & Docker Compose
  • Tests : Pytest avec GitHub Actions CI/CD
  • Déploiement : Production sur serveur Oracle Cloud

Fonctionnalités

🏛️ Gestion des Salles

  • 5 salles pré-configurées (Atlas, Horizon, Innovation, Connect, Digital)
  • Affichage des capacités et équipements
  • Interface intuitive de sélection

📅 Réservations

  • Formulaire de réservation complet
  • Champ email optionnel
  • Sélection de date et horaires
  • Vérification en temps réel de la disponibilité
  • Détection automatique des conflits d'horaires
  • Bouton désactivé si créneau occupé
  • Validation des créneaux disponibles
  • Annulation de réservations

📊 Planning Visuel

  • Grille de planning par jour (8h-22h)
  • Vue d'ensemble de toutes les salles
  • Code couleur : Disponible / Réservé
  • Nom de l'utilisateur affiché sur les créneaux réservés
  • Navigation par date
  • Liste détaillée des réservations du jour

📈 Monitoring et Observabilité

  • Dashboard Grafana complet avec métriques en temps réel
  • Métriques Prometheus : CPU, mémoire, requêtes HTTP
  • Surveillance des performances : temps de réponse, taux d'erreur
  • Métriques personnalisées : réservations, accès aux salles
  • Alertes automatiques en cas de problème

🚀 Démarrage Rapide

Prérequis

  • Docker et Docker Compose installés
  • Ports 3000, 8001, 5432, 9090, 3001 disponibles

Installation et lancement

  1. Cloner le projet
git clone https://github.com/SarTron-NorthBlue/dockezr.git
cd dockezr
  1. Lancer tous les services
docker-compose up -d

ou utilisez le script Windows :

scripts/start.bat
  1. Accéder à l'application

📁 Structure du Projet

dockezr/
├── backend/                  # API FastAPI
│   ├── main.py              # Point d'entrée avec métriques Prometheus
│   ├── requirements.txt     # Dépendances Python
│   ├── Dockerfile           # Configuration Docker
│   └── test_*.py           # Tests automatisés
│
├── frontend/                # Application Next.js
│   ├── app/                 # Pages et composants Next.js 14
│   │   ├── layout.tsx
│   │   ├── page.tsx
│   │   └── globals.css
│   ├── package.json         # Dépendances Node.js
│   ├── tsconfig.json        # Configuration TypeScript
│   ├── tailwind.config.ts   # Configuration Tailwind
│   └── Dockerfile           # Configuration Docker
│
├── monitoring/              # Configuration monitoring
│   ├── prometheus.yml       # Configuration Prometheus
│   └── grafana/             # Configuration Grafana
│       ├── provisioning/    # Datasources et dashboards
│       └── dashboards/      # Tableaux de bord
│
├── ansible/                 # Déploiement automatisé
│   ├── deploy.yml          # Playbook Ansible
│   ├── inventory.ini       # Inventaire des serveurs
│   └── group_vars/         # Variables de configuration
│
├── scripts/                 # Scripts d'administration
│   ├── start.bat           # Démarrage
│   ├── stop.bat            # Arrêt
│   └── test.bat            # Tests
│
├── docker-compose.yml       # Orchestration des services
├── docker-compose.prod.yml  # Configuration production
├── CHANGELOG.md            # Historique des versions
└── README.md               # Ce fichier

🏛️ Salles Pré-configurées

Salle Capacité Équipements
Salle Atlas 30 personnes Vidéoprojecteur, Tableau blanc, WiFi
Salle Horizon 15 personnes Écran TV, Tableau blanc, WiFi
Salle Innovation 50 personnes Vidéoprojecteur, Sono, WiFi, Climatisation
Salle Connect 8 personnes Écran TV, Visioconférence, WiFi
Salle Digital 20 personnes 20 postes informatiques, Vidéoprojecteur, WiFi

🌐 API Endpoints

Routes des Salles

  • GET /rooms - Liste toutes les salles
  • GET /rooms/{room_id} - Récupère une salle spécifique
  • POST /rooms - Crée une nouvelle salle
  • DELETE /rooms/{room_id} - Supprime une salle

Routes des Réservations

  • GET /reservations - Liste toutes les réservations
  • GET /reservations/room/{room_id} - Réservations d'une salle spécifique
  • GET /reservations/date/{date} - Réservations pour une date donnée
  • POST /reservations - Crée une nouvelle réservation
  • DELETE /reservations/{reservation_id} - Annule une réservation

Monitoring

  • GET /health - Vérification de l'état de l'API
  • GET /metrics - Métriques Prometheus

Documentation interactive

📊 Monitoring et Observabilité

Dashboard Grafana

Le système inclut un dashboard Grafana complet avec :

  • Status des Services : Backend, Prometheus, Node Exporter
  • Métriques CPU : Utilisation CPU du processus backend
  • Métriques Mémoire : Utilisation mémoire en temps réel
  • Performance HTTP : Requêtes par seconde, temps de réponse
  • Métriques Métier : Nombre de réservations, accès aux salles

Métriques Prometheus

  • http_requests_total : Nombre total de requêtes HTTP
  • http_request_duration_seconds : Durée des requêtes
  • reservations_total : Nombre de réservations créées
  • room_access_total : Nombre d'accès aux salles
  • process_cpu_seconds_total : Utilisation CPU
  • process_resident_memory_bytes : Utilisation mémoire

Accès au Monitoring

🔧 Commandes Utiles

Démarrer les services

docker-compose up -d

Arrêter les services

docker-compose down

Voir les logs

# Tous les services
docker-compose logs -f

# Service spécifique
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f prometheus
docker-compose logs -f grafana

Reconstruire les images

docker-compose up -d --build

Tests automatisés

scripts/test.bat

🚀 Déploiement en Production

Déploiement Automatisé avec Ansible

Le projet inclut une configuration Ansible complète pour le déploiement automatisé :

# Déploiement automatique
cd ansible
./deploy-auto.ps1

# Déploiement manuel
./deploy-manuel.ps1

Configuration de Production

Le fichier docker-compose.prod.yml est configuré pour la production avec :

  • Variables d'environnement sécurisées
  • Health checks pour tous les services
  • Volumes persistants pour les données
  • Réseaux Docker dédiés
  • Configuration monitoring complète

Variables d'environnement de production

# Base de données
POSTGRES_USER=dockezr_user
POSTGRES_PASSWORD=Dockezr2025!Secure
POSTGRES_DB=dockezr_prod

# Frontend
NEXT_PUBLIC_API_URL=http://141.253.118.141:8001

# Grafana
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=Grafana2025!Secure

🗄️ Base de Données

Configuration

  • Host : localhost (ou db depuis les conteneurs)
  • Port : 5432
  • Utilisateur : dockezr_user
  • Mot de passe : Dockezr2025!Secure
  • Base de données : dockezr_prod

Structure des tables

Table rooms

  • id (SERIAL PRIMARY KEY)
  • name (VARCHAR UNIQUE)
  • capacity (INTEGER)
  • equipment (TEXT)
  • description (TEXT)

Table reservations

  • id (SERIAL PRIMARY KEY)
  • room_id (INTEGER FOREIGN KEY)
  • user_name (VARCHAR)
  • user_email (VARCHAR)
  • reservation_date (DATE)
  • start_time (TIME)
  • end_time (TIME)
  • purpose (TEXT)
  • created_at (TIMESTAMP)

🎨 Frontend

L'interface utilise :

  • Next.js 14 avec App Router
  • TypeScript pour le typage statique
  • Tailwind CSS pour le styling moderne et responsive
  • Axios pour les requêtes HTTP vers l'API

Fonctionnalités de l'interface

Onglet Planning (par défaut)

  • 📊 Grille de planning visuelle (8h-22h)
  • 🎨 Code couleur : vert (disponible) / rouge (réservé)
  • 📅 Sélecteur de date
  • 👤 Affichage du nom de l'utilisateur sur les créneaux
  • 📋 Liste détaillée des réservations du jour sélectionné

Onglet Réservation

  • Liste visuelle des salles disponibles avec détails
  • Sélection interactive de salle
  • Formulaire de réservation complet
  • Email optionnel (pas obligatoire)
  • Vérification en temps réel de la disponibilité
  • / Indicateur visuel de disponibilité du créneau
  • 🔒 Bouton désactivé automatiquement si créneau occupé

Onglet Mes Réservations

  • Affichage de toutes les réservations
  • Informations détaillées (salle, date, horaire, objet)
  • Possibilité d'annuler une réservation

🧪 Tests et Qualité

Tests automatisés

  • Tests API : Validation des endpoints avec Pytest
  • Tests de connectivité : Simulation d'erreurs pour validation
  • CI/CD : GitHub Actions avec tests automatiques
  • Couverture : Tests de performance et de régression

Exécution des tests

# Tests complets
scripts/test.bat

# Tests de simulation d'erreur
scripts/test-connectivity.bat

🔒 Sécurité

Configuration de production

  • Mots de passe sécurisés pour tous les services
  • Configuration CORS appropriée
  • Health checks pour la surveillance
  • Volumes persistants pour les données
  • Réseaux Docker isolés

Recommandations de sécurité

  • Changez les mots de passe par défaut en production
  • Configurez HTTPS/SSL avec un reverse proxy
  • Activez l'authentification utilisateur
  • Configurez les sauvegardes de la base de données
  • Limitez l'accès aux ports de monitoring

📝 Personnalisation

Ajouter de nouvelles salles

Via l'API :

curl -X POST http://141.253.118.141:8001/rooms \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Salle Formation",
    "capacity": 25,
    "equipment": "Vidéoprojecteur, WiFi",
    "description": "Salle de formation polyvalente"
  }'

Modifier les ports

Éditez le fichier docker-compose.prod.yml et changez les mappings de ports :

ports:
  - "VOTRE_PORT:PORT_INTERNE"

🎯 Cas d'Usage

Ce système est idéal pour :

  • Centres de formation
  • Espaces de coworking
  • Entreprises avec salles de réunion
  • Universités et écoles
  • Bibliothèques avec salles d'étude

📋 Versions et Releases

Version actuelle : v1.1.0

  • Date de release : 16 octobre 2025
  • Type : Release avec monitoring
  • Statut : Stable, déployé en production
  • Compatibilité : Windows, Linux, macOS
  • Dépendances : Docker, Docker Compose

Changelog

Voir CHANGELOG.md pour l'historique complet des versions.

Releases GitHub

  • v1.1.0 - Version avec monitoring
  • v1.0.0 - Version initiale

📞 Support et Documentation

Documentation

Monitoring

📄 Licence

Ce projet est développé pour Expernet - Centre de Formation.


🏢 Système de réservation Expernet - Simplifions la gestion des salles !

🌐 Application en ligne : http://141.253.118.141:3000

S
Description
No description provided
Readme 128 KiB
2025-10-17 13:05:17 +02:00
Languages
PowerShell 53.5%
TypeScript 22.6%
Python 17.7%
Shell 2.2%
Batchfile 1.5%
Other 2.5%