🚀 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
This commit is contained in:
Rassaby Ludovic
2025-10-17 15:05:09 +04:00
parent 5a879b7db1
commit 35cad7998d
17 changed files with 1223 additions and 761 deletions
+12 -2
View File
@@ -4,18 +4,28 @@ FROM node:20-alpine
# Définir le répertoire de travail
WORKDIR /app
# Accepter les build args
ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
# Copier les fichiers package
COPY package*.json ./
# Installer les dépendances
RUN npm install
# Installer wget pour les health checks
RUN apk add --no-cache wget
# Copier le reste des fichiers
COPY . .
# Exposer le port
EXPOSE 3000
# Commande pour démarrer l'application
CMD ["npm", "run", "dev"]
# Build de l'application pour la production
RUN npm run build
# Commande pour démarrer l'application en mode production
CMD ["npm", "start"]
+2 -2
View File
@@ -58,7 +58,7 @@ export default function Home() {
purpose: ''
})
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000'
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://141.253.118.141:8001'
useEffect(() => {
fetchRooms()
@@ -535,7 +535,7 @@ export default function Home() {
<button
type="submit"
disabled={loading || (selectedRoom && formData.reservation_date && formData.start_time && formData.end_time && !isSlotAvailable(selectedRoom, formData.reservation_date, formData.start_time, formData.end_time))}
disabled={loading || !!(selectedRoom && formData.reservation_date && formData.start_time && formData.end_time && !isSlotAvailable(selectedRoom, formData.reservation_date, formData.start_time, formData.end_time))}
className="w-full bg-indigo-600 text-white py-3 px-4 rounded-lg hover:bg-indigo-700 transition-colors disabled:bg-gray-400 font-medium text-lg flex items-center justify-center gap-2"
>
{loading ? (