Aller au contenu

App iOS

Soirama — quoi regarder ce soir, avec une IA sur le téléphone

App iOS qui recommande films, séries et animés selon l'humeur, la compagnie et le temps disponible. Une IA embarquée écrit les raisons, et le profil de goût ne quitte jamais l'appareil.

Nature
App iOS
Stack
App iOSExpoReact NativeTypeScriptApple Intelligencellama.rnTMDB
Voir le site en ligne(nouvel onglet)

Devant un catalogue de streaming, on passe vingt minutes à chercher et on finit par relancer une série connue. Soirama part de la situation plutôt que du catalogue : l'humeur, la compagnie et le temps disponible. L'app propose films, séries et animés, chacun avec une raison courte et la plateforme où le regarder.

Ce que fait l'app

  • Jusqu'à trois humeurs au choix, la compagnie (seul, à deux, entre potes, en famille) et le temps disponible, du format court au marathon.
  • Une pile d'environ 24 propositions, chacune avec une phrase d'explication.
  • Notation en quatre niveaux (adoré, aimé, bof, pas aimé) qui affine un profil de goût, résumé dans un portrait.
  • Onglet Plateformes : l'utilisateur coche ses abonnements et l'app ne propose que ce qu'il peut regarder tout de suite.
  • Français et anglais. Aucun compte : le profil reste sur l'appareil.

Stack et architecture

  • Expo SDK 57 (dev build, New Architecture, React Compiler), expo-router, TypeScript strict, Reanimated 4, zustand avec MMKV, TanStack Query, zod.
  • Données publiques : API TMDB pour films et séries, AniList pour les animés. Le contenu pornographique est filtré à trois niveaux : requêtes, post-filtre sur chaque réponse et consigne du modèle.
  • IA locale, sans serveur : Apple Intelligence (Foundation Models) quand l'appareil le permet, sinon un modèle Qwen3-1.7B téléchargé à la demande via llama.rn, sinon un mode à base de règles. Un module Expo local pour Gemini Nano existe côté Android.
  • Code découpé en zones à dépendances à sens unique (ui, reco, ai, data, profile), chacune exposée par une façade.

Ce qui a été difficile

Les modèles embarqués ont environ 4 000 tokens de contexte : impossible de leur donner le catalogue. Le modèle ne fait donc que ce qu'il fait bien, comprendre le profil pour produire une intention de recherche, puis rédiger. La recherche et le pré-classement (affinités de genre, durée, qualité, nouveauté) sont déterministes, et le modèle ne classe qu'une dizaine de candidats. Les raisons écrites en arrière-plan remplacent ensuite les phrases-modèles des cartes à venir.

Autre écueil : le SDK iOS 27 exige le cycle de vie par scènes d'UIKit. Sans lui, l'app plantait au lancement sur iPad. Le correctif est passé par un plugin Expo, avec une mise en page iPad native.

Publication

Gratuite, avec des publicités légères et un achat unique pour les retirer. Version 1.0 envoyée à App Store Connect et soumise à la revue d'Apple.