Jean Desauw
All work
React Native

Odisei Play

Odisei Play is a music learning app for Travel Sax, Travel Clarinet, acoustic saxophones, and acoustic clarinets. Video courses, play-along songs, and practice tools react live to what you play. Travel Sax connects over Bluetooth MIDI; the app also handles USB and audio input. One React Native codebase, three platforms: iOS, Android, and web.

I joined as Lead React Native Engineer in 2024, pairing with the CTO in a two-engineer team. Since then I have written 38% of the commits in the repo.

Odisei Play
Production interfaceReact Native / Expo
Client
Odisei Music
Lead React Native Engineer
Timeline
2024 to present
Stack
React Native, Expo, TypeScript, Supabase, BLE
01

The challenge

Most apps render data. This one listens to a physical instrument.

The app pairs with the Travel Sax over Bluetooth and receives a live MIDI stream while you play. That means pairing flows, reconnection edge cases, and three transport layers to arbitrate: Bluetooth, USB, and audio input. And it has to work identically on iOS, Android, and the web, where the connection runs on the web Bluetooth API instead of the native stack.

On top of the hardware layer sits a full learning product: structured courses, play-along songs, practice tools, progression, purchases. A product that size, shipped by a team of two engineers on a release every two weeks.

The real challenge is that pace. Two people cannot ship a product this size every two weeks unless the codebase itself is doing part of the work.

02

The solution

The connection layer

I own the device connectivity system: scanning, pairing, MIDI-over-Bluetooth message parsing, reconnection, and device settings, with a manager that arbitrates between Bluetooth, USB, and audio input. I also built the web implementation on the web Bluetooth API, so the browser version connects to the saxophone exactly like the native apps do.

The learning experience

I own most of what happens around playing: the courses section and its interactive video player, where checkpoints pause the lesson and wait for you to actually play something on the instrument before moving on. The post-session flow is driven by a small state machine I built to sequence awards, streak celebrations, and goals without the spaghetti that usually grows in that part of an app.

A codebase that scales past two engineers

I led the monorepo migration: the app plus ten shared packages, a design-token pipeline, and a component library documented in Storybook.

That structure changed who writes code. Our designer is not a developer. She builds her components directly in Storybook, with Claude Code working from the same rules and design tokens the engineers use, and we import them into the app. No Figma file sits waiting for an engineer to rebuild it. The design arrives already written.

AI as part of the team

I initiated the agentic infrastructure: per-package CLAUDE.md files, a single-source-of-truth rules system, custom skills and hooks. Today the whole team works with Claude Code on top of it, and AI agents commit to the repo under their own names.

What I did not build

Honesty beats an inflated case study: the audio engine, the pitch detection, and the core playing screen are the CTO's work. I built most of what surrounds them.

03

Results

The app runs in production on iOS, Android, and the web from a single React Native codebase. Counted in September 2026: over 150 screens, 24 feature modules, a design system of more than 340 components documented in Storybook, and a test suite that goes from unit level to Playwright end-to-end.

We ship a release every two weeks, with over-the-air patches in between. The repository holds 14,179 commits and 5,370 of them are mine, 38% of the history, in a codebase that was already a year old when I joined.

The part I am most proud of is not a feature. It is that the structure lets two engineers, one designer, and a few AI agents ship like a much bigger team.

Key features

  • 01Support for Travel Sax, Travel Clarinet, acoustic saxophones, and acoustic clarinets
  • 02Bluetooth, USB, and audio device connectivity, including the web Bluetooth implementation
  • 03Interactive video checkpoints that wait for you to play the instrument
  • 04Post-session orchestrator sequencing awards, streaks, and goals
  • 05Monorepo with a shared-package architecture and a Storybook design system
  • 06Agentic coding infrastructure used by the entire team, designer and AI agents included
  • 07Bi-weekly release train with over-the-air patches

Recommendation

Jean was the first technical hire at Odisei Music. Over 2.5 years, he shaped a large part of what our product became. Odisei Play is our app for learning saxophone and clarinet, and the brief was demanding: one codebase, three high-performance targets (Web, iOS, Android). The playing interface, gamification, connecting to physical instruments over Bluetooth, USB or microphone, notifications, the backend. Jean took on entire areas of it, eventually up to architectural decisions and AI integration & optimization. He also developed a real sense for design and product along the way, which is rare in an engineer and invaluable in a small team. He understands not just how to build something, but why it matters for the business. What stands out most is how he approaches problems. Give him something hard and ambiguous, and he solves it, even when it takes extra effort. He is also an excellent teammate: he collaborates naturally and consistently found ways to help us ship faster. If you are looking for a talented, motivated engineer who sees both the technical detail and the bigger picture, Jean is your person. I would work with him again without hesitation.
Stack named in this recommendation

TypeScript, React Native/Expo, Skia & Reanimated, Supabase/SQL, RevenueCat, Node and GitHub mono-repo, OneSignal, agentic coding.

Kim Chouard
CTO @ Odisei Music · Jean's direct manager · September 2026
Freelance React Native lead

Lead React Native, on your team.

Two years leading Odisei Play: one codebase on iOS, Android and web, a release every two weeks, with two engineers and AI agents. That role on your team, or the repo setup that makes the pace possible.