Accueil
EN
Tous les projets
Système hôtelierTerminé

Holiday Beach Platform

Un système digital intelligent — site web, application mobile et chatbot IA — pour unifier 34 000+ réservations éparpillées sur 186 documents scannés.

PFE Master — iTeam University2025–2026
  • OCR
  • Chatbot IA
  • Gemini
  • React
  • React Native
  • FastAPI
  • Flask
  • MySQL
Page d'accueil de la plateforme Djerba Holiday Beach avec le widget de réservation
Démo vidéo

Contexte

Djerba Holiday Beach gérait ses réservations de façon fragmentée : les données étaient réparties sur 6 fichiers PDF et 186 documents scannés, sans vision unifiée. Ce projet est né d’un stage terrain (opérations hôtelières & données) qui a révélé l’ampleur du problème : 34 000+ réservations à réconcilier.

Problème

Sans plateforme centralisée, impossible de suivre les réservations en temps réel, de croiser les données entre les canaux, ou de répondre rapidement aux clients — tout reposait sur des documents papier et scannés dispersés.

Architecture

  • Pipeline de données : OCR (i2OCR) sur les 186 PDF scannés → extraction en CSV → chargement MySQL.
  • Plateforme web : React + TypeScript + TailwindCSS, backend FastAPI, tableau de bord temps réel.
  • Application mobile : React Native / Expo, réservation par QR code, stockage local SQLite avec synchronisation MySQL.
  • Chatbot IA : microservice Flask connecté à Google Gemini (Flash), avec contexte métier MySQL, pour un support client 24/7 (détail ci-dessous).
  • Déploiement : architecture microservices sur Netlify (frontend) et Render (backend).

Refonte 2026

Une refonte majeure a fait passer la plateforme d’un prototype à un outil d’exploitation :

  • Réservation en libre-service avec un service de disponibilité anti-surréservation : pour chaque type de chambre, les réservations actives qui se chevauchent ne dépassent jamais le nombre de chambres physiques.
  • Facturation réelle : factures numérotées en séquence (FA-2026-0001…), émises à la confirmation de la réservation et non à la demande, avec un statut de paiement indépendant.
  • Sécurité : mots de passe bcrypt et authentification JWT ; API de 33 routes couverte par des tests (disponibilité, tarification, réservations, sécurité).
  • Application mobile El Sofra (React Native, Expo) pour le restaurant de l’hôtel : écrans client et personnel, scan de QR code, après nettoyage de l’historique des réservations.
  • Nouvelle identité visuelle : un seul système de design pour le site et l’administration, dérivé du logo de l’hôtel, avec les vraies photos de l’établissement.

Zoom sur le chatbot

Le chatbot, développé dans le cadre de mon PFA de Master, répond aux questions répétitives que la réception traitait à la main chaque jour : disponibilités, horaires du restaurant, accès à la piscine, itinéraire.

  • Widget React + Vite : un bouton flottant qui s’ouvre en fenêtre de conversation, avec des réponses rapides (« Réserver », « Horaires », « Contact ») et un message de secours si l’API ne répond pas.
  • API Flask : POST /api/chat pour la conversation et GET /api/health pour la supervision, avec CORS pour l’intégrer à n’importe quelle page du site.
  • Classe Brain : elle décide comment répondre. Par défaut, elle interroge Gemini Flash (avec bascule automatique entre versions du modèle) avec un prompt qui porte l’identité de l’hôtel et impose des réponses courtes (1 à 2 phrases).
  • Repli intelligent : si Gemini est indisponible ou que la clé d’API manque, le chatbot bascule sur une détection d’intentions par mots-clés (salutation, réservation, contact). Il ne tombe jamais en panne pour le client.
  • Contexte MySQL : le nombre de réservations est lu en base pour enrichir les réponses liées à la réservation, au lieu d’une réponse générique.

Stack

React, TypeScript, TailwindCSS, React Native/Expo, FastAPI, Flask, MySQL, SQLite, OCR (i2OCR), LLM Google Gemini, Netlify, Render.

Résultats

  • 34 000+ réservations fragmentées unifiées depuis 186 documents scannés.
  • Réservation en libre-service par QR code, sans dépendre du personnel sur site.
  • Support client assuré 24/7 par le chatbot IA, avec accès direct au contexte métier — et sans interruption grâce au mode de repli.