Projects

Things I've built

A selection of personal and side projects.

Featured

Le Petit Bac Online

A popular online multiplayer word game (the French version of Scattergories) built with React and Node.js. The game grew organically to 98k+ active users over 3 years, driven almost entirely by SEO and word-of-mouth.

98k+ Active users
135k+ Sessions
60k Organic users
3 yrs 2023 – 2025
React Node.js WebSockets MongoDB SEO

Traffic & users

  • Organic search — 81k sessions (Google, Bing, Ecosia, Yahoo, Qwant)
  • Direct — 46k sessions
  • Referral — 4.6k sessions (Discord, Teams)
  • Organic social — 2.8k sessions
  • 1.3k registered users via Discord OAuth
Petit Bac overview Petit Bac one-month analytics
Open Source · Collaboration

Listenbourg — Translation API

Listenbourg started as a viral French internet phenomenon in November 2022 — a fictional country imagined collectively online, which quickly grew into a collaborative cultural project. A community of contributors built an entire ecosystem around it: an interactive map, an identity card generator, a constructed language (Listenbourgeois), and the open source translator I worked on. The phenomenon reached national media coverage, including a tongue-in-cheek weather forecast on TF1 by meteorologist Tatiana Silva, as well as segments on France 3 and France Info.

Node.js Express JavaScript REST API MIT License

My contribution

  • Designed and implemented the translation algorithm matching French input to Listenbourgeois with a scoring system that returns a primary translation and ranked alternatives
  • Built the Node.js / Express backend exposing the public POST and GET /translate endpoints consumed by the community frontend
  • Developed the words database API (Traducteur-DB-API) used to add, edit and serve translated entries to contributors
  • Collaborated remotely with a distributed team of developers, linguists and designers organising the work across the Listenbourg GitHub organisation

Why it matters

  • Real-world experience shipping production code as part of an open source collective rather than as a solo developer
  • Translation engine had to gracefully handle a constructed, evolving vocabulary — emphasis on fuzzy matching and confidence scoring rather than strict dictionary lookups
  • Public API consumed by an independent frontend team, requiring clear contracts, versioning discipline and documentation
Listenbourg translator interface Listenbourg logo TF1 weather forecast featuring Listenbourg

And there's more...

Discover the rest of my projects on my GitHub!

Visit my GitHub