02Ce que j'ai construit
Jaw
Mon application de streaming musical, sans pub. Elle a remplacé Spotify.
- Période
- 2023 à 2024
- Rôle
- Conception, développement, hébergement
- Stack
- React NativeIonicAdonisJSMySQLRedisElectron
01Contexte
J'en avais assez des publicités et des interruptions des services de streaming. Jaw est né de cette frustration : une application de streaming musical personnelle, sans pub, avec une bibliothèque et des playlists synchronisées entre le téléphone et l'ordinateur. Elle a très vite remplacé Spotify et Deezer au quotidien.
02Rôle
Projet solo de bout en bout : conception, API, applications mobile et desktop, hébergement. C'est le projet sur lequel j'ai le plus appris sur la chaîne complète d'un produit, du serveur jusqu'à l'icône sur l'écran d'accueil.
03Architecture
L'API est écrite avec AdonisJS. Elle gère les utilisateurs, la bibliothèque, les playlists et le streaming des fichiers audio. Une base MySQL stocke les métadonnées et Redis sert de cache pour les lectures fréquentes et les files d'attente de lecture.
Le client mobile est en React Native avec Ionic et Capacitor, le client desktop en Electron. Les deux partagent la logique de lecture et de synchronisation.
04Apprentissages
Le streaming audio est plein de détails invisibles : reprise de lecture, mise en cache hors ligne, gestion de la batterie. Un cache Redis bien placé change tout sur la réactivité perçue.
C'est aussi là que j'ai compris l'intérêt de partager le code métier entre plusieurs clients plutôt que de le dupliquer.