Retour aux projets
SAAS CHATBOT HOC

SAAS CHATBOT HOC

Écosystème IA pour le Secteur de la Construction

Rôle: Full Stack Developer | Lead Front End | UI/UX Designer
Période: Avril 2025 - Présent
En Production
Client: SAAS CHATBOT HOC (via House of Coding / Amiltone)

Aperçu

Contexte

SAAS CHATBOT HOC est une startup française qui révolutionne le secteur de la construction et de la rénovation énergétique grâce à l'IA Générative. Le problème : les professionnels du bâtiment doivent vérifier la conformité avec plus de 300 réglementations techniques françaises (DTU, normes NF, Eurocodes, etc.), un processus manuel chronophage et sujet aux erreurs. La solution : un assistant IA spécifiquement formé sur ces réglementations, répondant instantanément aux questions techniques en citant les sources officielles.

Solution

L'écosystème se compose de trois composants internes pour que l'équipe SAAS CHATBOT HOC gère ses clients : (1) LBR-API - API REST multi-tenant robuste gérant les widgets de chat, l'authentification double (utilisateurs et widgets), les intégrations avec Stripe/AWS/Brevo, et le contrôle qualité automatisé ; (2) IA Factory - Back Office Admin où l'équipe configure les chatbots, génère des widgets personnalisés, gère les bases de connaissances et surveille les conversations ; (3) Portail Utilisateur - où les professionnels du bâtiment accèdent à l'assistant IA avec historique des conversations et gestion des abonnements. Le lien externe redirige vers le site institutionnel de l'entreprise.

Mon Rôle

J'ai occupé le rôle de Lead Front End et UI/UX Designer, responsable de toute l'architecture et du développement front-end des deux plateformes (BO et Portail). J'ai créé tout le design d'interface et l'expérience utilisateur, pris des décisions techniques sur le stack et les patterns de code. J'ai également collaboré activement au développement de l'API backend avec l'équipe House of Coding.

Stack Technique

Frontend

React
TypeScript
Vite
Tailwind CSS
Radix UI
shadcn/ui
TanStack React Query
TanStack Table
React Hook Form
Zod
React Router
Lucide React
react-i18next
Sonner
react-dropzone

Backend

NestJS
TypeScript
TypeORM
MySQL
JWT/Passport
bcrypt
Stripe
AWS S3
Brevo
Outil RAG
Winston
Swagger
Docker

Projets

1

LBR-API

API REST Multi-Tenant

~15.000-20.000
Lignes de Code
373
Fichiers
37
Modules
26
Entities
101
DTOs

API REST robuste créée par l'équipe House of Coding utilisant NestJS, spécialisée dans la gestion de widgets de chat avec IA. J'ai collaboré en implémentant les appels API du dashboard, l'intégration avec l'outil RAG et l'upload de documents sur S3.

Fonctionnalités

01
Intégration RAG

Connexion avec outil de Retrieval-Augmented Generation pour réponses basées sur documents

02
Multi-Tenancy

Isolation complète des données par tenant avec JWT validé

03
Authentification Double

JWT séparé pour utilisateurs (admin, portail) et widgets embarqués

04
CORS Dynamique

Validation d'origine basée sur widget integrations en base

05
Gestion des Widgets

Configurations visuelles (4 couleurs), logo, messages, Google Analytics

06
Système de Références

Upload de documents, URLs autorisées/bloquées, crawling automatique

07
Contrôle Qualité

Points de vérification avec questions/réponses, validation automatique via IA

08
Intégration Stripe

Webhooks avec validation de signature, gestion clients par tenant

09
Upload S3

URLs présignées pour téléchargement sécurisé avec limite de taille

10
Rate Limiting

Throttler personnalisé avec 100 req/min par IP + user_id

11
Import CSV/Excel

Importation en lot d'utilisateurs avec validation et transaction

12
Swagger Automatique

Documentation OpenAPI générée via décorateurs NestJS

Design Patterns

Repository Pattern
DTO Pattern
Guard Pattern
Decorator Pattern
Service Layer
Module Pattern

Décisions Techniques

Outil RAG

Système pour Retrieval-Augmented Generation, choisi pour la flexibilité et le contrôle sur le pipeline IA

JWT Double (Utilisateurs + Widgets)

Widgets embarqués sur sites externes nécessitent authentification propre, sans exposer credentials utilisateurs

CORS Dynamique via Base

Chaque widget peut être embarqué sur plusieurs domaines, impossible de configurer CORS statique

URLs Présignées pour S3

Téléchargements sécurisés sans exposer credentials AWS, expiration configurable

TypeORM plutôt que Prisma

Meilleure intégration NestJS, support décorateurs, performance pour queries complexes

Défis & Solutions

CORS Dynamique pour Widgets

Query en base pour valider origine à chaque requête, cache mémoire pour performance

Webhook Stripe avec Raw Body

Middleware personnalisé pour préserver raw body avant bodyParser NestJS

Import en Lot d'Utilisateurs

Parsing CSV/Excel avec fast-csv, validation en lot, insert avec transaction et rollback

2

IA Factory - Back Office Admin

Plateforme de Gestion de Chatbots IA

~32.000
Lignes de Code
293
Fichiers
~150
Composants
~40
Hooks
25+
Pages

Dashboard administratif enterprise-grade. J'ai créé le design UI/UX, design system et toute l'architecture des composants. J'ai développé les formulaires multi-étapes, tables avancées, gestion des widgets, système de références et toutes les autres fonctionnalités sauf les modules utilisateurs, entreprises et QA.

Fonctionnalités

01
Dashboard Administratif

Interface complète pour la gestion de la plateforme avec métriques

02
Formulaire Multi-Étapes

Création de widget en 7 étapes avec validation Zod par étape

03
Éditeur par Sections

Accordion avec sections enregistrables indépendamment via PATCH

04
Widget Configurator

Prévisualisation en temps réel des personnalisations du chatbot

05
DataTable Composée

Tables avec TanStack Table : tri, filtres, pagination, sélection batch

06
Knowledge Base UI

Upload drag-and-drop de documents avec react-dropzone

07
Système de QC

Contrôle qualité avec import CSV/Excel de points de vérification

08
Click Prompts Editor

Interface pour créer des prompts pré-configurés cliquables

09
Gestion Multi-tenant

Administration des utilisateurs, entreprises et permissions par rôle

10
Système de Referentials

Surveillance du crawler avec dernière exécution et détection des changements

11
Cache Invalidation

Fonction centrale invalidant les queries liées en cascade

12
Historique des Conversations

Visualisation des conversations utilisateurs avec rendu markdown

13
Internationalisation

Système multi-langue avec react-i18next pour le support de différentes langues

Design Patterns

Compound Components
Custom Hooks
Context API
Optimistic Updates
Adapter Pattern
Feature-based Structure

Décisions Techniques

Context + React Query

Context pour état UI (formulaires), React Query pour état serveur

Accordion pour édition

Permet sauvegarder sections indépendamment sans bloquer l'utilisateur

Défis & Solutions

Formulaire de 7 Étapes

Context pour état global, validation Zod par étape, hasStepErrors() pour feedback visuel

Upload avec Prévisualisation

FileReader pour prévisualisation locale immédiate, état séparé pour preview vs saved

Édition par Sections

Accordion avec bouton Save par section, PATCH pour updates partiels, track changes

Cache Invalidation en Cascade

Fonction refetchAllWidgetData() invalidant queries liées dans le bon ordre

3

Portail Utilisateur

Portail Web avec Widget de Chat Intégré

~6.300
Lignes de Code
75
Fichiers
~35
Composants
~15
Hooks
12
Pages

Application complète construite de zéro. J'ai implémenté authentification robuste, refresh automatique de tokens, intégration Stripe, widget de chat en iframe isolé et refonte complète de la version Webflow.

Fonctionnalités

01
Token Refresh Automatique

Refresh JWT 10 minutes avant expiration, replanification continue

02
Widget en Iframe

Isolation complète CSS/JS avec sandbox, communication via postMessage

03
Intégration Stripe

Pricing table intégrée, vérification de statut, billing portal

04
Système d'Authentification

Connexion, inscription, activation de compte, reset de mot de passe

05
Support B2B et B2C

Logique de souscription différenciée par type de tenant

06
Gestion des Conversations

Sidebar avec liste de conversations, créer nouvelle, continuer existante

07
Pages de Présentation

URLs dynamiques par nom pour démos sans authentification

08
Gestion de Compte

Modifier profil, titre professionnel, secteur, changer mot de passe

09
Internationalisation

Système multi-langue avec react-i18next pour le support de différentes langues

Design Patterns

Token Refresh Pattern
Iframe Isolation
Route Guards
Custom Hooks

Décisions Techniques

Iframe pour Widget

Isolation complète CSS/JS, évite conflits de style avec le portail

Refresh Proactif

Refresh 10min avant évite expiration pendant utilisation active

Stripe Pricing Table

Composant embarqué élimine besoin d'UI personnalisée pour plans

B2B sans paiement

Entreprises B2B ont contrat direct, pas besoin de checkout

Défis & Solutions

Token Refresh Automatique

Décoder JWT pour obtenir expiration, setTimeout 10min avant, replanifier après succès

Widget en Iframe Isolé

Sandbox avec allow-scripts allow-same-origin, paramètres via query string, postMessage

Statut de Souscription

Hook useSubscription() avec logique centralisée pour B2B (sans paiement) et B2C

Galerie

1
Image 1
2
Image 2
3
Image 3
4
Image 4
5
Image 5
6
Image 6
Gregory Praxedes | Full Stack Developer & UI/UX Specialist