02What I built

Jaw

My music streaming app, ad-free. It replaced Spotify.

Period
2023 to 2024
Role
Design, development, hosting
Stack
React NativeIonicAdonisJSMySQLRedisElectron
Visual for the Jaw project

01Context

I was tired of the ads and interruptions of streaming services. Jaw was born from that frustration: a personal music streaming app, ad-free, with a library and playlists synced between phone and computer. It quickly replaced Spotify and Deezer day to day.

02Role

Solo project end to end: design, API, mobile and desktop apps, hosting. It's the project where I learned the most about the full chain of a product, from the server to the icon on the home screen.

03Architecture

The API is written with AdonisJS. It handles users, the library, playlists and audio file streaming. A MySQL database stores metadata and Redis serves as a cache for frequent reads and playback queues.

The mobile client uses React Native with Ionic and Capacitor, the desktop client uses Electron. Both share the playback and sync logic.

04Learnings

Audio streaming is full of invisible details: resuming playback, offline caching, battery management. A well-placed Redis cache changes everything about perceived responsiveness.

That's also where I understood the value of sharing business logic between several clients instead of duplicating it.