TripBrain
- Durée
- 6 mois
- Date
- Mars 2026
- Site web
- tripbrain.fr



+6
Préambule
TripBrain est né d'une frustration simple : sur place, un voyage vit dans cinq apps ouvertes et dix onglets. Les réservations sont dans la boîte mail, le programme dans une app de notes, les billets quelque part dans un PDF, et la carte n'a plus de réseau. TripBrain met tout ça au même endroit, et ça continue de fonctionner hors ligne.
Le produit se compose de deux briques que j'ai construites et que je maintiens :
- L'application sur app.tripbrain.fr : une PWA installable, pensée mobile d'abord, où le voyage est stocké sur l'appareil.
- Le site vitrine sur tripbrain.fr : landing page SEO et générateur d'itinéraire par IA gratuit.
Les deux sont open source : tripbrain et tripbrain-landing. La démo est accessible ici : app.tripbrain.fr?demo=true.
Stack technique
- Next.js 16 (App Router) et React 19
- TypeScript, Tailwind CSS v4, shadcn/ui, Framer Motion
- IndexedDB (stockage local-first, aucune base utilisateur côté serveur)
- Cloudflare R2 via ma propre librairie bucketcode
- Leaflet et OpenStreetMap
- PostHog (UE) et Vercel Analytics, tous deux conditionnés au consentement
- Vitest, GitHub Actions, Bun, Vercel
Fonctionnalités clés
- Roadbook jour par jour avec transports, hébergements, activités et notes
- Consultation entièrement hors ligne grâce à un service worker écrit à la main
- Coffre à documents pour billets et réservations, consultable et cherchable sans réseau
- Partage par QR code, lien ou code à 8 chiffres qui expire au bout d'une heure
- Générateur d'itinéraire IA sans compte, sans clé API et sans coût d'inférence
- Export agenda (.ics), import Excel et JSON, parcours d'installation PWA
En détail
L'application est volontairement local-first. Trois bases IndexedDB contiennent le voyage, les images mises en cache et les documents. Le seul code côté serveur est l'API de partage : pas de compte, pas d'inscription, et rien de personnel stocké de mon côté. Le voyage appartient à l'utilisateur, sur son téléphone.
Le partage fonctionne à deux niveaux. Un petit itinéraire est empaqueté avec msgpack, compressé en deflate et encodé directement dans le QR code : il ne quitte jamais l'appareil. Un itinéraire plus gros, ou qui doit être dicté à voix haute, est stocké sous forme de snapshot compressé sur Cloudflare R2, derrière un code numérique à 8 chiffres choisi pour que les téléphones affichent le pavé numérique. Les snapshots expirent au bout d'une heure et l'API est protégée par un rate limiting et une liste blanche CORS explicite.
Le générateur sur tripbrain.fr prend un chemin différent de la plupart des produits « IA voyage ». Il construit un prompt à partir d'un brief court ou d'un questionnaire de 17 questions, le visiteur le colle dans son propre ChatGPT ou Claude, puis colle la réponse en retour. Le site valide le JSON avec Zod, calcule un indice de confiance qui repère les hallucinations classiques (dates fausses dans le passé, coordonnées manquantes, titres inventés), et transmet le résultat à l'app. Sur le même appareil, l'itinéraire voyage dans un fragment d'URL et ne touche donc jamais un serveur. Du bureau vers le téléphone, il passe par l'API de partage et un QR code.
Rôle
Projet solo : produit, design, front-end, API de partage, travail SEO et juridique, déploiement. Une bonne partie du développement est passée par des pull requests assistées par IA que j'ai spécifiées, relues et intégrées.
Ce que j'ai construit
Le roadbook hors ligne
- Frise des journées avec navigation au swipe et carte à deux niveaux (tout le voyage, puis les activités du jour)
- Menu d'actions rapides à l'appui long sur chaque information modifiable
- Système d'édition déclaratif avec descripteurs de champs, validation des brouillons et récapitulatif des différences avant sauvegarde
- Service worker cache-first pour les assets et network-first pour les tuiles de carte, plus un cache d'images dans IndexedDB
- Coffre à documents avec recherche, tri, aperçu et export
- Export ICS écrit à la main, conforme au repliement de lignes de la RFC 5545
- Orchestration de l'installation PWA avec instructions par plateforme et cadence de relance
Partage et transfert
- Pipeline msgpack + deflate + base64url partagé entre l'app et la landing
- QR codes autonomes sous 2 000 caractères, snapshots R2 au-delà
- Codes numériques à 8 chiffres, expiration d'une heure, écritures conditionnelles pour ne jamais écraser un code
- Route Open Graph pour les liens de partage qui ne résout jamais le code, pour que les aperçus restent génériques
Le site vitrine et le générateur
- Générateur « apporte ton LLM » : prompt en sortie, JSON en entrée, validation Zod et score d'hallucination
- Graphe Schema.org écrit à la main (Organization, SoftwareApplication, FAQPage, HowTo) avec des titres calibrés au caractère près
- Cartes Open Graph par page générées à la volée avec next/og
- Mockup iPhone animé qui embarque la vraie démo de l'app
Vie privée par construction
- Catalogue d'événements analytics typé et fermé, imposé dans le code et dans un hook before_send
- Sans consentement, aucun SDK chargé ; aucun cookie avant accord
- Pages légales générées depuis une seule configuration qui nomme chaque sous-traitant
Réalisations techniques
Zéro backend pour les données utilisateur
Une application de voyage complète avec édition, documents et cartes, où le serveur ne stocke rien sur l'utilisateur. Le modèle de confiance tient en une phrase : votre voyage vit sur votre appareil.
Une fonctionnalité IA sans coût de fonctionnement
Le générateur produit des itinéraires jour par jour pour n'importe quelle destination sans un seul appel d'API de ma part. L'utilisateur apporte le modèle ; le site apporte la structure, la validation et le transfert.
Une couverture de tests sur le cœur
Environ 376 tests unitaires sur la couche librairie (partage, import, agenda, données d'itinéraire), à près de 98 % de couverture des instructions, exécutés à chaque pull request.
En résumé
TripBrain est le compagnon de voyage que je voulais pour mes propres voyages, livré comme un produit gratuit et open source. Il combine une PWA local-first, un pipeline de partage respectueux de la vie privée et un générateur IA qui ne coûte rien à faire tourner, et il est en ligne sur tripbrain.fr.






