Aller au contenu
Guillaume Ojardias
Écran d’accueil de l’application mobile Fusily
Produit personnelMobile

Fusily

Application mobile (iOS et Android) de recettes et de planification de repas.

Objectif
Aider à planifier les repas de la semaine, n’acheter que le nécessaire, varier les plats à chaque fois et découvrir de nouvelles recettes.
Résultat
Publiée sur l’App Store et Google Play, en ligne depuis 2024.
Stack technique
DjangoDRFPostgreSQLReact NativeExpo

Fusily est un produit complet que je construis de bout en bout : une application mobile React Native / Expo publiée sur iOS et Android, adossée à un backend Django / DRF et une base PostgreSQL. On y crée, partage et planifie des recettes, on génère sa liste de courses, et on réduit le gaspillage en n’achetant que le nécessaire. Du modèle de données au déploiement des stores, chaque brique — API, authentification, notifications, mise en production — est pensée pour durer.

Le contexte

Je suis développeur backend : j’ai passé l’essentiel de ma carrière à concevoir des API et des modèles de données. Fusily est le projet qui m’a fait passer au mobile, puis au full-stack. L’idée : une application pour les passionnés de cuisine, où l’on partage ses recettes, en découvre de nouvelles, les planifie pour la semaine et se laisse guider pas à pas aux fourneaux.

Développer en natif aurait voulu dire apprendre Swift et Kotlin, maintenir deux bases de code et deux cycles de publication. Seul sur le projet, j’ai choisi une base de code unique, déployée sur iOS et Android.

Ce que j’ai construit

Chaque recette peut recevoir une ou plusieurs photos ou vidéos, que l’on réordonne avec un retour haptique. La partie sociale (commentaires, mentions j’aime, favoris, abonnements) s’accompagne de notifications push : rappel des repas planifiés, nouvelle recette partagée dans un domaine qui vous intéresse. Les jetons d’authentification sont conservés dans le stockage sécurisé du téléphone (le trousseau sur iOS et son équivalent sur Android), jamais en clair.

L’application est bilingue, en français et en anglais, et la traduction ne s’arrête pas à l’interface : les recettes et les astuces écrites par les utilisateurs sont traduites automatiquement. Le texte saisi est enregistré tout de suite dans sa langue d’origine, puis une tâche Celery détecte la langue et produit les autres versions via l’API Google Translate, en arrière-plan. Les commentaires, plus éphémères, restent dans leur langue.

La stack et pourquoi

Côté mobile, React Native avec Expo. Les bibliothèques Expo couvrent l’accès au matériel (notifications, stockage sécurisé, galerie photo, vibrations), et les services EAS gèrent la compilation avec trois profils (développement, préversion, production), l’envoi des binaires aux stores et les mises à jour à distance. Un correctif JavaScript peut ainsi partir en production en quelques minutes, sans repasser par la validation des stores.

Pour les composants d’interface, j’ai commencé avec Tamagui avant de migrer vers React Native Paper : chaque mise à jour de Tamagui apportait son lot de régressions, et je passais plus de temps à gérer la bibliothèque qu’à faire avancer le produit. Pour le web, j’utilise Next.js et Tailwind CSS plutôt qu’un framework unique pour les deux plateformes.

Côté serveur, Django et Django REST Framework sur PostgreSQL : mon terrain habituel, qui m’a permis de réutiliser mes réflexes de conception d’API et de modèle de données pendant que j’apprenais le mobile.

Où en est le projet

Fusily est gratuite et publiée sur l’App Store et Google Play depuis 2024. Je continue de la maintenir et de la faire évoluer. Plusieurs articles de ce blog en racontent les coulisses, du passage à Expo à la traduction du contenu utilisateur.

À lire sur le blog