Le problème
Au desk concierge, la même question revient vingt fois par soir : « Qu'est-ce que vous nous conseillez ce soir ? ». La réponse dépend de tout : l'envie du client (un bar calme, un kaiseki, une sortie en famille), le quartier, ce qui est encore ouvert à l'heure de Fukuoka… et elle vivait jusque-là dans des classeurs PDF et dans la tête de l'équipe.
Ce que fait l'appli
- Filtrage par intention (soirée romantique, solo, dîner d'affaires, artisans de Hakata, bar tardif, jour de pluie), par catégorie et par 81 tags bilingues (anniversaire, famille, kaiseki, wagyu…), avec une recherche qui comprend aussi bien « バー », « バー » que « bar ».
- Une vitrine de 2 à 4 étapes réordonnable, avec temps de marche depuis l'hôtel et alertes horaires (« ferme dans 40 min », « fermé aujourd'hui »).
- Mode présentation plein écran face au client, puis livraison : page invité bilingue ouverte par QR code (aucun serveur, l'itinéraire voyage compressé dans le lien), LINE, WhatsApp ou impression sur papier à en-tête.
- Accueil « Tonight in Fukuoka » : lieux ouverts maintenant, intention suggérée selon l'heure et la météo (Agence météorologique du Japon), lieux les plus recommandés.
- Outils du desk : itinéraires enregistrés, passation d'équipe, statistiques de recommandation, import / export CSV pour Excel, intégration Google Places & Maps.
Sous le capot
TypeScript strict sans aucun framework, packagé avec Vite, avec une seule dépendance au runtime (qrcode). Les animations de Magic UI (une bibliothèque React) sont portées à la main en TypeScript + CSS pour garder une appli ultra-légère. Côté serveur, des fonctions Vercel synchronisent le catalogue entre les tablettes via Supabase (Postgres, schéma privé, accès protégé par un code du desk), avec une file d'attente hors ligne. L'appli est installable (PWA) et existe aussi en version fichier unique pour une tablette sans réseau.
🔒 La démo
La démo est cette version fichier unique : elle n'est reliée à aucune base de données. Le catalogue pré-chargé s'affiche, mais tout ce que vous ajoutez reste dans votre navigateur ; aucune donnée du desk réel n'est visible ni partagée.