Ce disque est lu par le lecteur de SoundCloud. En le chargeant, SoundCloud reçoit ton adresse IP et peut déposer des traceurs dans ton navigateur. Ton accord vaut pour cette visite.

Politique de confidentialité de SoundCloud ↗(nouvel onglet)

Tabi

~/projets/tabi en ligne

Capture de Tabi
Capture de tabi.otby.fr

Une application pour apprendre les phrases essentielles d'un voyage au Japon, utilisable hors ligne, avec une progression façon jeu de rôle japonais.

L'idée

Partir au Japon sans parler japonais, mais en sachant dire l'essentiel : saluer, commander, demander son chemin, prendre le train. Tabi enseigne ces phrases leçon après leçon, au rythme du voyage.

Ce que fait l'app

- 13 modules, 33 leçons, 194 expressions, en romaji avec le japonais à côté, avec le mot à mot et la prononciation par la voix du téléphone.

- Une séance du jour calée sur les dates du voyage : trois leçons par jour au plus avant le départ, que des révisions les deux derniers jours, puis les phrases utiles pour l'étape en cours.

- Une révision espacée (algorithme FSRS) avec quatre types d'exercices : à dire, à comprendre, à lire, et remettre les mots dans l'ordre.

- Une progression façon RPG : expérience, niveaux, ligues, série de jours, un compagnon à choisir parmi sept animaux et une carte du Japon avec les étapes du voyage.

- Un groupe de voyage jusqu'à quatre personnes, qui partagent les mêmes dates et le même itinéraire.

- Un mode Voyage : les phrases épinglées s'affichent en grand pour les montrer à quelqu'un, et l'écran ne se met pas en veille.

Hors ligne

Tabi s'installe comme une application (PWA). Les leçons et les révisions marchent sans réseau, et les réponses se synchronisent au retour de la connexion. Dans le métro de Tokyo, c'est indispensable.

Côté technique

Une SPA React (TanStack Router et Query) servie par une API Hono, avec un contrat OpenAPI partagé, prêt pour une future app mobile. Les données sont dans PostgreSQL avec Drizzle, les comptes sont gérés par Better Auth. L'app est testée de bout en bout avec Playwright, mode avion compris, et déployée avec Docker et Kamal.

stack = ["TypeScript", "React", "Hono", "PostgreSQL", "Drizzle", "TanStack", "Tailwind", "PWA"]
adresse = "tabi.otby.fr"