Chargement

Retour

Stillist

Durant mon année de Licence Professionnelle, nous avons eu pour consignes de créer une application par groupe de 4. Cette application devait avoir une qualité digne du milieu professionnel, et être vendable (auprès de client ou d'investisseurs) à la fin de l'année.

STILLIST est cette application.

STILLIST est une application de mode, qui tire parti de la reconnaissance d’image pour proposer le meilleur style vestimentaire possible en fonction de la garde-robe de l’utilisateur. L’application se veut comme un assistant vestimentaire de poche, un guide simple d’utilisation pour l’amateur en mode qui veut prendre soin de son apparence mais ne sait pas comment s’y prendre. Le but est donc que l’utilisateur puisse composer des styles avec les vêtements déjà présents dans sa garde-robe.

En quelques mots, le concept

L’utilisateur envoie des photos de ses vêtements. L’application traite alors les photos ainsi obtenues au travers d’un web-service de reconnaissance d’image et compose alors des styles à partir des différentes pièces. Les résultats sont présentés à l’utilisateur qui a également la possibilité d’affiner sa recherche avec des tags (décontracté, habillé ou temps chauds, par exemple.) ou bien de demander un look à partir d’un vêtement spécifique.

Simple comme bonjour, pour l'utilisateur en tout cas

Pour commencer, l’utilisateur prend en photo ses vêtements. L’application traite alors les photos ainsi obtenues au travers d’un web-service de reconnaissance d’image et compose alors des styles à partir des différentes pièces. Les résultats sont présentés à l’utilisateur qui a également la possibilité d’affiner sa recherche avec des tags (décontracté, habillé ou temps chauds, par exemple.) ou bien de demander un look à partir d’un vêtement spécifique.

Et sinon, comment ça marche ?

Pour pouvoir utiliser la fonctionnalité principale de l’application (la création de tenue), l’utilisateur doit d’abord renseigner plusieurs vêtements de sa garde-robe en les prenant en photo avec l’application.

À partir d’un vêtement, la photo de celui-ci est envoyée à la reconnaissance d’image (Google IA Vision) qui permet d’avoir les tags (ou caractéristiques) de ce vêtement. Ces tags sont envoyés à l’application afin que l’utilisateur puisse choisir ceux qui sont les plus pertinents.
Une fois que nous avons les tags, une recherche sur Google Image via SerpWow est faite afin de trouver la photo d’une tenue comportant un vêtement similaire. Cette photo est ensuite recadrée grâce au service Cloudinary, puis découpée afin de pouvoir isoler le second vêtement de cette tenue.

Ce vêtement est donc envoyé à la reconnaissance d’image pour avoir ses tags. Ils peuvent alors être comparés avec les tags des différents vêtements de la garde-robe de l’utilisateur afin de trouver le plus proche.
Une fois ce vêtement trouvé, la tenue peut donc être renvoyée à l’utilisateur. Elle est donc composée de la photo de la tenue associée aux deux vêtements venant de la garde-robe de l’utilisateur.

Autrement dit, cette application recoupe de la reconnaissance d'image & le système de tendance de Google pour coller toujours plus au goût commun actuel.

Les technologies utilisées

Une application, avec React Native & Expo

React Native nous permet de développer une seule application, un seul code source qui va être compilé en code natif Android et IOS. L’application a donc été développée en code Javascript. Le code est structuré en composant selon nos besoins. Enfin la logique et le module Redux ont également été utilisés pour permettre de généraliser les données dans toute l’application, et ainsi de rendre accessibles les informations à tous les composants.

Expo quant à lui facilite et permet de fluidifier le développement. Il fournit toute une liste de composants préconçus, mais aussi un CLI (Commande-Line Interface ou Interface en ligne de commande en français) et des outils pour tester l’application, via une connexion avec le téléphone par exemple.

Une API, en Symfony

Au niveau du développement de l’API (Application Program Interface ou interface de programme d’application en français), nous avons choisi d’utiliser le framework (ou infrastructure logicielle) Symfony car il possède différents bundles facilitant la création d’API tels que NelmioApiDoc ou JMSSerializer, et bénéficie d’une forte documentation.

Cette API fait le lien entre l’application et la base de données, mais permet aussi d’appeler les différents services externes dont nous avons besoin. C'est par à elle que va être envoyé en premier lieu les photos des vêtements. A partir de là, c'est en passant par l'API que se feront l'attribution des tags, la création de tenues etc.

Je vous ai dit que c'était un travail d'équipe

Je n'ai donc pas créé cette application tout seul. Nous étions un groupe de quatre, parmi lesquels deux graphistes et deux développeurs.

Nous nous sommes organisés pour pouvoir avancer le plus possible sur l'ensemble du projet. Chacun avait un périmètre de prédilection, mais nous gardions des échanges réguliers avancés tous ensemble. Cela nous a permis de créer dans le même temps une application mobile, mais aussi une API, une charte graphique complète et cohérente et moult support de communications. L’organisation du travail en groupe a été assez naturelle, facilitée par les spécialités de chacun. Travailler ainsi dans un groupe structuré où on sait que chacun maîtrise bien son domaine était fort plaisant.

Conclusion sur le projet

Arrivés à la date de rendu du projet, nous avons atteint nos objectifs. L'application fonctionne. Elle permet d'envoyer des photos, qui seront analysées. Elle permet la création de tenues. Et enfin elle offre une expérience utilisateur agréable, et une interface accueillante. Nous avons donc pu présenter l'application sans encombre à la soutenance finale devant un ensemble de professeur et de professionnel.

Je vous laisse un petit aperçu.

Cette découverte très approfondie de React Native fut très plaisante pour moi. J'ai grandement apprécié développer en tirant parti de cet outil et de sa logique composant. J'espère d’ores et déjà pouvoir me lancer avec enthousiasme dans un autre projet utilisant cette même technologie.