Accueil

1. Genèse du projet Hairbnb

1.1. Le déclic : une discussion devenue opportunité

À la fin de mon stage, j’ai eu l’opportunité d’assister à une discussion informelle entre mon maître de stage et plusieurs de ses cousines, toutes coiffeuses de métier.

Ce qui aurait pu rester un simple moment de convivialité a rapidement pris une tournure inattendue : cette conversation est devenue l’élément déclencheur de mon projet `Hairbnb`.

Ces femmes partageaient toutes une réalité professionnelle exigeante, souvent précaire, marquée par la flexibilité, la passion, mais aussi par une difficulté constante à structurer et développer leur activité.

Certaines travaillaient à temps partiel, d’autres en complément de leur emploi principal, mais toutes faisaient face à un manque criant d’outils numériques simples, accessibles et pensés pour elles.

Mon maître de stage, alors en pleine réorientation de son ASBL, évoquait différentes pistes de projets numériques.

Quant à moi, je cherchais encore une idée concrète pour mon application de fin de formation.

En entendant leurs témoignages, une évidence s’est imposée : il existait un besoin réel, humain, et encore non résolu auquel je pouvais répondre par une solution numérique.

C’est ainsi qu’est née l’idée de Hairbnb.

1.2. Observation du besoin : état des lieux du secteur

À la suite de cette rencontre, j’ai entamé une analyse plus approfondie du métier de coiffeur indépendant, en m’intéressant à leur fonctionnement, à leurs outils, à leurs canaux de communication, et aux défis qu’ils rencontrent au quotidien.

Cette phase d’observation a permis d’identifier plusieurs problématiques majeures :

  • Difficulté à se faire connaître dans un marché dominé par les grandes enseignes.

  • Gestion manuelle des rendez-vous source d’erreurs et de perte de temps.

  • Absence de système de fidélisation client0

  • Coût trop élevé ou complexité des outils existants.

  • Faible visibilité numérique malgré leur savoir-faire.

Ces constats ont confirmé qu’il existait un manque de solutions adaptées pour ce type de profil : des professionnelles compétentes mais mal équipées numériquement.

1.3. Limites des solutions existantes

Des plateformes comme Planity, Treatwell ou encore des outils comme Shedul offrent des fonctionnalités avancées pour la réservation en ligne ou la gestion de clientèle.

Mais ces solutions sont pensées pour des salons établis, avec un certain volume de rendez-vous et un budget dédié à la gestion.

Pour des coiffeuses indépendantes, ces plateformes représentent souvent un investissement disproportionné : abonnements mensuels, commissions, interfaces surchargées…

En résumé : trop cher, trop lourd, trop complexe.

1.4. Une idée personnelle, un besoin partagé

En écoutant ces femmes, j’ai compris qu’elles avaient besoin de simplicité, de visibilité, et d’autonomie.

Et c’est précisément ce que je voulais leur offrir à travers Hairbnb : une application accessible, pensée pour leur quotidien, leur permettant de :

  • Créer un profil attractif,

  • Gérer leurs services et disponibilités,

  • Communiquer facilement avec leurs clientes,

  • Recevoir des paiements en ligne,

  • Et, à terme, fidéliser une clientèle régulière.

J’imaginais une plateforme légère, mobile-first, intuitive — à l’opposé des usines à gaz existantes — et qui place la coiffeuse au centre du dispositif.

2. Une idée née d’un parcours, enrichie par une vision

Dès le départ, mon objectif avec Hairbnb n’était pas seulement de réaliser une application, mais de mettre en œuvre concrètement tout ce que j’ai appris durant mon bachelier en informatique de gestion.

Ce projet représentait une opportunité idéale pour mobiliser un ensemble de compétences acquises au fil des années :

  • Analyse et conception d’applications.

  • Programmation orientée objet.

  • Gestion des bases de données relationnelles.

  • Systèmes d’exploitation.

  • Réseaux et sécurité.

  • Projet de développement logiciel.

Je voulais que ce projet soit complet, cohérent et professionnalisant, à la fois sur le plan technique, fonctionnel et humain.

Le choix d’une application mobile multiplateforme s’est imposé très naturellement.

Étant déjà familier avec Flutter grâce à plusieurs travaux pratiques réalisés auparavant, j’ai vu en ce framework un excellent compromis entre productivité, performance native et accessibilité multiplateforme.

Concernant le backend, mon hésitation initiale portait sur Firebase, qui offre des solutions "tout-en-un" séduisantes, notamment pour des MVP.

Cependant, ayant étudié en profondeur les bases de données relationnelles et les systèmes backend structurés, j’ai finalement opté pour un backend en Django (Python), plus aligné avec les principes d’organisation, de modélisation, et de scalabilité enseignés durant mon cursus.

Cela dit, je crois également à la délégation intelligente des responsabilités.

J’ai donc intégré plusieurs services externes pour gagner en efficacité et en robustesse :

  • Firebase Authentication pour la gestion sécurisée des connexions.

  • Stripe pour les paiements.

  • Firebase Firestore pour la messagerie en temps réel.

Ces choix sont tous détaillés dans les sections techniques à venir.

Par ailleurs, dans un contexte où l’intelligence artificielle redéfinit de plus en plus le paysage numérique, j’ai voulu que Hairbnb embarque cette dimension d’innovation.
L’intégration d’un module basé sur l’IA (détaillé plus loin dans le rapport) représente pour moi une manière de projeter le projet vers l’avenir, et d’offrir une expérience enrichie, personnalisée, voire assistée.

Enfin, j’ai toujours accordé une grande importance à l’expérience utilisateur. Je souhaitais une interface :

  • Fluide et intuitive,

  • Simple à prendre en main pour un utilisateur non technique,

  • Adaptée à une utilisation mobile dans des contextes réels (salon, domicile, déplacement…).

J’admets toutefois avoir manqué certains aspects importants, comme l’accessibilité visuelle (ex. : contraste pour les personnes daltoniennes), ou encore quelques incohérences graphiques.
Des améliorations sont déjà en cours de réflexion pour une future version plus inclusive et mieux finalisée sur le plan du design.

2.1. Hébergement de l’application : choix, contraintes et mise en œuvre

La question de l’hébergement s’est posée dès les premières phases du développement de Hairbnb.

Dans le cadre d’un travail de fin de formation, l’adoption d’une solution d’hébergement professionnelle, souvent onéreuse, n’était pas justifiée au regard des objectifs pédagogiques et expérimentaux du projet.

Une première exploration a été menée du côté des plateformes gratuites telles que Vercel, qui se révèlent efficaces pour le déploiement d’applications front-end statiques.

Toutefois, ce type de solution ne répondait pas aux exigences spécifiques du projet Hairbnb, qui repose sur une architecture incluant un backend Django, une base de données PostgreSQL, ainsi que l’intégration de services tiers (paiement en ligne via Stripe, messagerie via Firebase, etc.).

Face à ces limites, il a été décidé d’opter pour un hébergement local, via un serveur personnel auto-administré. Ce choix permettait de conserver un environnement de développement contrôlé, tout en assurant l’accessibilité de l’application à distance.

La mise en place a nécessité plusieurs étapes techniques :

  • L’acquisition d’un nom de domaine (www.hairbnb.site) afin de rendre l’application accessible publiquement.

  • La création d’une machine virtuelle dédiée sur le serveur local, destinée à isoler le projet du reste du réseau domestique.

  • L’installation d’un reverse proxy (Nginx) assurant la redirection des requêtes HTTP/HTTPS vers le serveur Django.

  • La génération d’un certificat SSL via Let’s Encrypt, permettant une communication chiffrée et conforme aux standards de sécurité.

  • La configuration de règles de pare-feu et de redirection de ports strictes, limitant l’exposition aux menaces extérieures.

  • La restriction des connexions SSH à des adresses IP spécifiques, et la mise en place de mécanismes de protection contre les attaques de type force brute (fail2ban, surveillance des journaux, etc.).

Cette solution locale permet d’assurer un environnement stable, sécurisé et évolutif, tout en maîtrisant les coûts et en maintenant une flexibilité totale sur la configuration.

Les aspects plus détaillés relatifs à la sécurité réseau, à l’architecture d’accès, et aux mesures de durcissement seront abordés dans un chapitre ultérieur dédié à la sécurité informatique et à l’administration système.

3. Cahier des charges initial — Hairbnb (version MVP)

Ce premier cahier des charges correspond à la définition initiale du projet Hairbnb, telle qu’envisagée lors de sa phase de démarrage de projet de conception d’un MVP (Minimum Viable Product).

Il s’agissait de poser les bases d’une application mobile permettant de connecter des coiffeuses indépendantes à des clientes via une interface simple et directe.

3.1. Objectifs du projet

L’objectif principal était de développer une première version fonctionnelle (MVP) d’une marketplace mobile spécialisée dans la réservation de prestations capillaires.

Cette version devait permettre :

  • Aux coiffeuses :

    • De créer une page personnelle avec leurs services, leurs réalisations et leurs informations de contact.

    • De gérer leur agenda de rendez-vous.

  • Aux clients :

    • De localiser les coiffeuses disponibles à proximité via une carte interactive.

    • De réserver un créneau en quelques clics.

Un second objectif implicite était de poser les fondations techniques pour permettre une évolution du projet vers des versions plus avancées dans le futur.

3.2. Fonctionnalités prioritaires pour le MVP

3.2.1. Pour les coiffeuses :

  • Création d’une page personnelle :

    • Présentation des services : nom, prix, durée.

    • Portfolio simple avec images des réalisations.

    • Coordonnées et localisation.

  • Gestion des réservations :

    • Affichage des créneaux disponibles.

    • Acceptation ou refus des demandes de rendez-vous.

3.2.2. Pour les clients :

  • Carte interactive :

    • Affichage des coiffeuses à proximité grâce à la géolocalisation.

    • Filtres simples (distance, service proposé).

  • Réservation :

    • Sélection d’un service et d’un créneau disponible.

    • Notification push de confirmation ou de rappel.

3.3. Livrables attendus

  • Application mobile Flutter fonctionnelle (MVP) :

    • Affichage des profils coiffeuses.

    • Carte interactive avec géolocalisation.

    • Système de réservation simple et fluide.

  • Documentation technique :

    • Code source commenté et organisé.

    • Recommandations pour la suite du développement.

3.4. Méthodologie et outils

  • Framework mobile : Flutter (choisi pour sa rapidité de prototypage).

  • Services externes :

    • Google Maps API pour l’intégration de la carte.

    • Firebase Cloud Messaging pour les notifications.

  • Méthode de travail : Agile, avec des itérations courtes (sprints hebdomadaires).

  • Outils de suivi : Trello ou Notion pour le suivi des tâches.

3.5. Contraintes et limites

  • Les fonctionnalités avancées comme le paiement en ligne (Stripe) ou un fil d’actualité ont été exclues de cette version initiale.

  • La synchronisation avec des calendriers externes (Outlook, Google Calendar) est laissée pour une future itération.

  • L’interface utilisateur est volontairement minimaliste, afin de prioriser la logique métier et le développement fonctionnel.

4. Cahier des charges HairBnB – Version actuelle

4.1. Évolution du projet

Pour pousser la barre un peu plus haut, je me suis vite rendu compte que le cahier des charges initial fixé au lancement du projet était trop minimaliste, et ne répondait pas pleinement aux ambitions que je m’étais fixées pour une application de TFE.
J’ai donc pris l’initiative de faire évoluer ce cahier des charges, en l’alignant davantage avec les objectifs que j’ai exposés dans les sections précédentes : concevoir une application complète, riche en fonctionnalités, moderne et évolutive.
Cette nouvelle version s’appuie sur les retours terrain, les expérimentations techniques menées, ainsi que ma volonté de concevoir un produit abouti et potentiellement exploitable au-delà du cadre académique.
— Soulayman

4.2. Objectifs du projet (version actuelle)

4.2.1. Objectif principal

Développer une marketplace mobile professionnelle connectant coiffeurs indépendants et clients, en couvrant l’ensemble du parcours utilisateur, de la découverte du service jusqu’au paiement sécurisé.

4.2.2. Objectifs spécifiques atteints

  • Pour les coiffeurs :

    • Création d’un profil professionnel complet

    • Gestion avancée des disponibilités et plannings

    • Suivi des réservations, revenus et statistiques

  • Pour les clients :

    • Recherche géolocalisée de coiffeurs

    • Réservation avec paiement intégré

    • Gestion de favoris et d’avis

    • Messagerie avec les prestataires

    • Historique de rendez-vous

  • Pour l’écosystème :

    • Notifications en temps réel

    • Assistant IA

    • Mécanismes promotionnels personnalisés


4.3. Architecture technique actuelle

4.3.1. Stack technologique

  • Frontend : Flutter

  • Backend : Django REST Framework

  • Base de données : PostgreSQL

  • Authentification : Firebase Auth + JWT

  • Géolocalisation : geoapify

  • Paiements : Stripe

  • Notifications : Firebase Cloud Messaging

  • IA : Claude AI


4.4. Fonctionnalités principales développées

4.4.1. Authentification avancée

  • Connexion email, Google

  • Rôles multiples (Client, Coiffeur, Admin)

  • Vérification de l’adresse email

  • Mot de passe oublié / réinitialisation

4.4.2. Profils utilisateurs

  • Pour les coiffeurs :

    • Informations personnelles

    • Portfolio et spécialités

    • Services et tarification

    • Création et gestion de salons (logo, horaires, etc.)

  • Pour les clients :

    • Profil personnel simple

    • Système de favoris

    • Historique de réservations

4.4.3. Catalogue de services

  • Services organisés par catégories

  • Prix, durée, description

  • Promotions temporaires

  • Affichage dynamique des tarifs réduits

4.4.4. Réservation

  • Recherche avec filtres : distance

  • Sélection de services et créneaux

  • Réservation et paiement

  • Gestion des plannings / indisponibilités

4.4.5. Paiements sécurisés

  • Stripe : CB, Apple Pay, Google Pay

  • Gestion des remboursements

  • Reçus

  • Suivi des revenus côté coiffeur

4.4.6. Communication

  • Avis et notation client/coiffeur

  • Chat intégré

  • Notifications push temps réel

4.4.7. Assistant IA Claude

  • Support automatisé

4.4.8. Back-office administrateur

  • Tableau de bord de gestion

  • Modération des contenus

  • Statistiques globales


4.5. Modèle de données

4.5.1. Entités principales

  1. TblUser

  2. TblCoiffeuse

  3. TblSalon

  4. TblService

  5. TblRendezVous

  6. TblPaiement

  7. AIConversation


4.6. Sécurité et conformité

4.6.1. Sécurité

  • Authentification JWT

  • Validation backend

  • Protection CSRF / XSS

4.6.2. Conformité RGPD

  • Consentement explicite

  • Droit à l’oubli


4.7. Performance et scalabilité

4.7.1. Optimisations techniques

  • Pagination

  • Compression images

4.7.2. Infrastructure

  • Monitoring et logs


4.8. 8. Différences avec le premier cahier de charge

Aspect MVP Initial Version actuelle

Authentification

Basique

Firebase + social login

Paiements

Non inclus

Stripe complet

Carte

Simple

Géolocalisation dynamique

Services

Statique

Catalogue dynamique + promos

Communication

Notifications uniquement

Chat + assistant IA

Administration

Non prévue

Dashboard complet

Base de données

Simple

Relationnelle complexe

UI/UX

Minimaliste

Interface moderne


4.9. Livrables actuels

  • Application Flutter (mobile)

    • UI complète

    • Services intégrés

    • Tests unitaires / intégration

  • Backend Django

    • API REST sécurisée

    • Authentification et permissions

    • Modèle de données complet

    • Documentation API

  • Infrastructure de déploiement

    • Configuration production

    • CI/CD (GitHub Actions)

    • Monitoring / sauvegarde


4.10. Roadmap et évolutions futures

4.10.1. Fonctionnalités prévues

  • Analytics pour coiffeurs

  • Système de fidélité client

  • Vente de produits capillaires

  • Essayage virtuel (réalité augmentée)

4.10.2. Améliorations techniques

  • Migration microservices

  • Optimisation des performances

  • Tests automatisés étendus

  • Supervision avancée


4.11. Conclusion

L’application HairBnB a franchi plusieurs étapes depuis sa version MVP initiale.

Elle intègre aujourd’hui une architecture robuste, des fonctionnalités abouties, et propose une expérience utilisateur soignée, conçue selon les ressources dont je disposais et les compétences que j’ai pu mobiliser tout au long du projet.
— Soulayman

Avec l’ajout de composants innovants comme l’assistant IA ou la gestion financière intégrée, le projet est désormais une base solide pour un bon tarvail de fin de formation.

5. Lexique

Terme Définition

API

  • Application Programming Interface

  • Interface de programmation permettant à différentes applications de communiquer entre elles

ASBL

  • Association Sans But Lucratif

  • Structure juridique belge pour organisations non-commerciales

AsciiDoc

Langage de markup léger pour créer de la documentation technique

Backend

Partie serveur d’une application, invisible pour l’utilisateur final, qui gère la logique métier et les données

CI/CD

  • Continuous Integration/Continuous Deployment

  • Méthodes d’automatisation du développement et déploiement

Claude AI

Assistant d’intelligence artificielle développé par Anthropic, intégré dans Hairbnb

CSRF

  • Cross-Site Request Forgery

  • Vulnérabilité de sécurité web

CSS

  • Cascading Style Sheets

  • Langage de style pour définir l’apparence des pages web

Django

Framework web Python pour développer des applications web robustes

Django REST Framework

Extension de Django spécialisée dans la création d’APIs REST

Fail2ban

Logiciel de protection contre les attaques par force brute

Firebase

Plateforme de développement d’applications mobiles et web de Google

Firebase Auth

Service d’authentification de Firebase

Firebase Cloud Messaging

Service de notifications push de Firebase

Firebase Firestore

Base de données NoSQL en temps réel de Firebase

Flutter

Framework de développement d’applications mobiles multiplateformes de Google

Frontend

Partie client d’une application, visible et interactive pour l’utilisateur

Geoapify

Service de géolocalisation et cartographie

GitHub Actions

Service d’intégration continue de GitHub

Google Maps API

Interface de programmation pour intégrer les cartes Google

JWT

JSON Web Token - Standard pour sécuriser les échanges d’informations

Let’s Encrypt

Autorité de certification gratuite pour certificats SSL/TLS

Marketplace

Plateforme numérique connectant vendeurs et acheteurs

MVP

  • Minimum Viable Product

  • Version minimale d’un produit avec fonctionnalités essentielles

Nginx

Serveur web et proxy inverse

NoSQL

Type de base de données non-relationnelle

Notion

Application de prise de notes et gestion de projets

PostgreSQL

Système de gestion de base de données relationnelle open source

Push notification

Notification envoyée automatiquement sur un appareil mobile

REST

  • Representational State Transfer

  • Architecture pour services web

RGPD

Règlement Général sur la Protection des Données

SSL

  • Secure Sockets Layer

  • Protocole de sécurisation des communications

Stripe

Plateforme de paiement en ligne

TFE

Travail de Fin d’Études

Trello

Application de gestion de projets en mode Kanban

UI/UX

  • User Interface/User Experience

  • Interface et expérience utilisateur

Vercel

Plateforme de déploiement pour applications web

XSS

  • Cross-Site Scripting

  • Vulnérabilité de sécurité web

5.1. Termes Métier et Concepts

Terme Définition

Géolocalisation

Technologie permettant de déterminer la position géographique d’un utilisateur

Planity

Plateforme existante de réservation pour salons de beauté

Portfolio

Collection d’exemples de travaux d’un coiffeur

Reverse proxy

Serveur intermédiaire qui dirige les requêtes vers les serveurs appropriés

Shedul

Logiciel de gestion pour salons de beauté

Sprint

Période de développement courte en méthode Agile

Treatwell

Plateforme européenne de réservation beauté

5.2. Acronymes et Abréviations

Acronyme Signification

HTML

HyperText Markup Language

HTTP/HTTPS

HyperText Transfer Protocol (Secure)

IP

Internet Protocol

SSH

Secure Shell

URL

Uniform Resource Locator

VM

Virtual Machine (Machine Virtuelle)

5.3. Concepts Techniques Avancés

Concept Définition

Agile

Méthode de développement logiciel itérative et collaborative

Authentification sociale

Connexion via comptes existants (Google, Facebook, etc.)

Certificat SSL

Document numérique authentifiant l’identité d’un site web

Microservices

Architecture où l’application est divisée en petits services indépendants

Mobile-first

Approche de design priorisant l’expérience mobile

Monitoring

Surveillance continue du fonctionnement d’un système

Pagination

Division du contenu en pages pour améliorer les performances

Scalabilité

Capacité d’un système à gérer une charge croissante

Stack technologique

Ensemble des technologies utilisées dans un projet

5.4. Services et Plateformes

Service Utilisation dans Hairbnb

Apple Pay

Méthode de paiement mobile Apple (Stripe)

Google Pay

Méthode de paiement mobile Google (Stripe)

Google Calendar

Service de calendrier Google (intégration future)

Outlook

Client de messagerie Microsoft (intégration future)

5.5. Termes Légaux et Conformité

Terme Signification

Consentement explicite

Accord clair et informé de l’utilisateur pour le traitement de ses données

Droit à l’oubli

Droit des utilisateurs à demander la suppression de leurs données personnelles

Conformité RGPD

Respect du règlement européen sur la protection des données

Cette table de lexique couvre l’ensemble des termes techniques, concepts métier et acronymes utilisés dans le présent document sur Hairbnb, afin de faciliter la compréhension pour les lecteurs de tous niveaux techniques.
J’espère que ce chapitre a été léger, clair, compréhensible et, surtout, pas trop ennuyeux à parcourir.
Merci pour votre temps et votre attention.
— Soulayman