Home
FR
All projects
Hotel systemCompleted

Holiday Beach Platform

An intelligent digital system — website, mobile app and AI chatbot — unifying 34,000+ reservations scattered across 186 scanned documents.

Master's thesis project — iTeam University2025–2026
  • OCR
  • AI Chatbot
  • Gemini
  • React
  • React Native
  • FastAPI
  • Flask
  • MySQL
The Djerba Holiday Beach platform homepage with its booking widget
Video demo

Context

Djerba Holiday Beach managed its reservations in a fragmented way: data was spread across 6 PDF files and 186 scanned documents, with no unified view. This project grew out of a field internship (hotel operations & data) that revealed the scale of the problem: 34,000+ reservations to reconcile.

Problem

Without a central platform, there was no way to track reservations in real time, cross-reference data across channels, or respond quickly to guests — everything relied on scattered paper and scanned documents.

Architecture

  • Data pipeline: OCR (i2OCR) on the 186 scanned PDFs → CSV extraction → MySQL loading.
  • Web platform: React + TypeScript + TailwindCSS, FastAPI backend, real-time dashboard.
  • Mobile app: React Native / Expo, QR-code booking, local SQLite storage synced with MySQL.
  • AI chatbot: a Flask microservice connected to Google Gemini (Flash), with MySQL business context, for 24/7 customer support (details below).
  • Deployment: microservices architecture on Netlify (frontend) and Render (backend).

2026 overhaul

A major overhaul took the platform from prototype to day-to-day operations tool:

  • Self-service booking backed by an anti-overbooking availability service: for each room type, overlapping active bookings never exceed the number of physical rooms.
  • Real invoicing: sequentially numbered invoices (FA-2026-0001…), issued when the booking is confirmed rather than on request, with an independent payment status.
  • Security: bcrypt password hashing and JWT authentication; a 33-route API covered by tests (availability, pricing, bookings, security).
  • El Sofra mobile app (React Native, Expo) for the hotel’s restaurant: customer and staff screens and QR-code scanning, built on a cleaned-up booking history.
  • New visual identity: one design system for both the website and the admin panel, derived from the hotel’s logo and using the property’s real photos.

A closer look at the chatbot

The chatbot, built as my Master’s PFA, handles the repetitive questions the front desk used to answer by hand every day: availability, restaurant hours, pool access, directions.

  • React + Vite widget: a floating button that opens into a chat window, with quick replies (“Book”, “Hours”, “Contact”) and a fallback message if the API is unreachable.
  • Flask API: POST /api/chat for conversation and GET /api/health for monitoring, with CORS so it can be embedded on any page of the site.
  • Brain class: decides how to answer. By default it calls Gemini Flash (switching automatically between model versions) with a prompt carrying the hotel’s identity and enforcing short replies (1–2 sentences).
  • Smart fallback: if Gemini is unavailable or the API key is missing, the chatbot switches to keyword-based intent detection (greeting, booking, contact). It never goes down for guests.
  • MySQL context: the reservation count is read from the database to enrich booking answers instead of giving a generic reply.

Stack

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

Results

  • 34,000+ fragmented reservations unified from 186 scanned documents.
  • Self-service QR-code booking, without relying on on-site staff.
  • 24/7 customer support via the AI chatbot, with direct access to business context — and no downtime thanks to the fallback mode.