Cappsule
Cappsule incarne une avancée significative dans ma carrière de développeur, marquant une fusion réussie entre ma passion pour le développement mobile et ma volonté d’apporter des solutions innovantes à des problèmes quotidiens. Ce projet, développé pour simplifier la gestion de la garde-robe en fonction de la météo, démontre non seulement une expertise technique étendue sur les plateformes Android et iOS mais aussi une capacité à répondre de manière créative aux besoins des utilisateurs. Cappsule souligne mon engagement pour l’innovation et l’autonomie dans la concrétisation d’idées en applications fonctionnelles et esthétiquement plaisantes.
Contexte
Cappsule s’inscrit dans une démarche d’innovation personnelle, visant à transformer la gestion quotidienne de la garde-robe en une expérience à la fois pratique et agréable. Née d’une volonté d’allier technologie et mode de vie moderne, cette application a pour but de simplifier le choix des tenues en fonction des prévisions météorologiques. Au-delà de répondre à un besoin personnel, le projet Cappsule s’est également posé comme un défi enrichissant : maîtriser le développement sur les écosystèmes Android et iOS et naviguer dans l’univers des publications sur le Play Store et l’App Store. Ce parcours a été l’occasion de relever des défis techniques significatifs, tout en s’inscrivant dans une démarche d’apprentissage continu et d’adaptation aux standards élevés des applications mobiles contemporaines.
Etapes
Le développement a impliqué plusieurs phases, depuis la conception initiale sur Figma, jusqu’à la programmation en Kotlin pour Android et en Swift pour iOS. J’ai dû apprendre à utiliser les fonctionnalités natives de chaque plateforme, comme l’accès à l’appareil photo, la gestion des données locales et l’intégration d’API météo.
Genèse
La genèse de Cappsule s’est amorcée en décembre 2021, avec une timeline ambitieuse fixée pour trois mois, jusqu’à fin février 2022. Cette période était scrupuleusement organisée : deux semaines de préparation, suivies d’un mois dédié au développement Android, puis un mois pour iOS, et finalement, deux semaines consacrées au déploiement et à la publication. Durant la phase de préparation, j’ai établi une liste précise des fonctionnalités souhaitées, dictées par mes besoins personnels mais également inspirées par l’offre existante sur le marché. Parmi ces fonctionnalités figuraient la prise de photos de vêtements, leur enregistrement et catégorisation, la gestion de leur disponibilité, l’intégration de la météo avec adaptation des tenues en fonction de la température, et enfin, la mise en place de thèmes clairs et sombres. Ce projet, autant par son ampleur que par son délai serré, a représenté un défi de taille et une opportunité d’apprentissage considérable.
Conception Initiale et Prototypage
L’histoire de Cappsule prend racine dans une phase initiale de conception rigoureuse réalisée sur Figma. Au cours de cette étape cruciale, j’ai façonné l’interface utilisateur et l’expérience globale de l’application. Cette approche proactive m’a permis d’établir une vision claire du projet, permettant ainsi de visualiser les interactions utilisateurs et l’esthétique visuelle avant même d’entamer le processus de codage. De plus, j’ai élaboré une charte graphique distinctive, inspirée par le genre d’application que représente Cappsule, avec notamment une couleur principale #d687df. J’ai également conçu le logo, m’assurant de sa pertinence et de son attrait visuel en sollicitant des retours sur Reddit (r/graphic_design). Ces derniers se sont avérés à la fois positifs et instructifs, validant mes choix de couleur et d’esthétique. Le logo, représentant un ceintre sur des lignes diagonales formant un triangle inversé sous celui-ci, évoque subtilement l’élégance et le prestige, rappelant un bijou haut de gamme. Pour ce qui est de l’interface graphique, j’ai puisé mon inspiration dans les designs natifs des applications Android et iOS, visant ainsi à garantir une facilité de développement. J’ai adopté des principes de conception bien établis tels que l’utilisation de grilles, de listes, ainsi que des blocs verticaux et horizontaux. De plus, j’ai veillé à respecter les directives de Google et d’Apple en matière de design (Material Design et Human Interface Guidelines), assurant ainsi l’harmonie des tailles de police, des boutons et des espacements.
Choix Technologiques et Apprentissage
Opter pour Kotlin pour Android et Swift pour iOS ne fut pas simplement une décision technique, mais aussi une opportunité d’apprentissage essentielle. Cette démarche m’a conduit à plonger dans les spécificités de chaque langage et framework, notamment Jetpack Compose et SwiftUI, afin d’exploiter pleinement leurs fonctionnalités modernes tout en garantissant une expérience utilisateur fluide et réactive sur les deux plateformes. Il est important de noter que ces choix ont été motivés également par le désir d’explorer des technologies qui ne sont pas abordées dans le cadre de mon cursus scolaire habituel. De plus, j’ai opté pour le développement natif pour des raisons d’apprentissage, sachant que cette approche peut être nécessaire même lors de l’utilisation de frameworks multiplateformes tels que Flutter, afin d’accéder aux spécificités de chaque appareil, telles que la caméra. Cette décision me permettra de développer des compétences transposables, que j’envisage de réutiliser si un jour je me lance dans le développement multiplateforme.
Développement et Intégration des Fonctionnalités
La phase de développement a été caractérisée par la mise en œuvre minutieuse de fonctionnalités essentielles, tant sur Android que sur iOS, afin de garantir une expérience utilisateur complète et fluide.
Interface
Une interface intuitive et efficace est essentielle pour garantir une expérience utilisateur fluide. Dans cette optique, j’ai conçu une architecture de navigation simple et intuitive, suivant les normes de Material Design et Human Interface Guidelines. L’application utilise un menu en bas de page, avec un titre et un logo en haut pour une reconnaissance rapide. Les dialogues sont privilégiés pour les interactions complexes, offrant ainsi une expérience utilisateur simplifiée. Les actions importantes, telles que la création d’un article ou la demande de proposition de tenue, sont accessibles via des boutons FAB en bas à droite de l’interface. La page d’accueil affiche automatiquement une tenue avec les conditions météorologiques actuelles en haut de la grille d’images. La page de garde-robe présente une liste d’articles avec des filtres pour une recherche rapide, et un simple clic ouvre un dialogue permettant de modifier les paramètres de l’article. En somme, cette approche centrée sur l’interface vise à offrir aux utilisateurs une expérience transparente et efficace, en combinant une navigation fluide, des interactions intuitives et des fonctionnalités accessibles en un clic.
Accès à l’Appareil Photo
Sur Android, j’ai réalisé une intégration soignée permettant aux utilisateurs d’accéder facilement à l’appareil photo pour capturer des images et les importer dans l’application. Cette fonctionnalité a été implémentée en utilisant les API Android dédiées, tout en veillant à une gestion efficace des autorisations utilisateur. Sur iOS, j’ai suivi une approche similaire en utilisant les fonctionnalités natives de Swift pour assurer une expérience utilisateur transparente lors de l’utilisation de l’appareil photo.
Gestion des Données Locales
Pour garantir une expérience utilisateur fluide, j’ai mis en place un système de gestion des données locales sur les deux plateformes. Sur Android, j’ai utilisé SQLite pour stocker et manipuler efficacement les données localement, tandis que sur iOS, CoreData a été utilisé de manière similaire pour assurer la persistance des données.
Intégration d’API Météo
L’intégration d’une API météo a représenté un défi technique majeur. Sur les deux plateformes, Android et iOS, j’ai utilisé l’API OpenWeatherMap pour obtenir des données météorologiques en temps réel, offrant ainsi une expérience utilisateur enrichie. Sur Android, j’ai effectué des requêtes directes à l’API OpenWeatherMap en utilisant l’URL fournie et en manipulant les données JSON récupérées. J’ai veillé à demander les permissions appropriées pour accéder à la localisation de l’utilisateur, garantissant ainsi une expérience météorologique personnalisée et précise. De même, sur iOS, j’ai utilisé URLSession pour gérer les requêtes HTTP vers l’API OpenWeatherMap. J’ai également sollicité l’autorisation de l’utilisateur pour accéder à sa localisation, permettant ainsi une expérience météorologique pertinente et adaptée. Un aspect crucial de cette intégration a été la gestion des situations où la connexion Internet n’était pas disponible ou autorisée. Pour répondre à ce défi, j’ai inclus un toggle permettant aux utilisateurs de choisir entre un affichage des données météorologiques basé sur des conditions chaudes ou froides. Cette fonctionnalité a été ajoutée pour offrir une expérience utilisateur plus personnalisée, mais n’affecte pas directement l’affichage des données météorologiques.
Gestion des Permissions
Assurer la sécurité et la confidentialité des données des utilisateurs a été une priorité absolue dans le développement de l’application. Conformément aux directives des stores respectifs et aux bonnes pratiques en matière de confidentialité, j’ai implémenté des mécanismes de gestion des autorisations sur les deux plateformes. Sur Android et iOS, j’ai suivi attentivement les recommandations des stores et les lignes directrices en matière de protection des données. J’ai intégré les demandes d’autorisation standard pour l’accès à des fonctionnalités sensibles telles que l’appareil photo et la localisation, en veillant à obtenir le consentement explicite de l’utilisateur avant d’accéder à ces informations. En adoptant cette approche, j’ai assuré que l’application respecte les normes de sécurité et de confidentialité établies, offrant ainsi aux utilisateurs une expérience fiable et sécurisée tout en préservant leur vie privée.
Paramètres Utilisateur
Les utilisateurs disposent de la possibilité de gérer les autorisations relatives à la localisation et à l’accès à Internet directement depuis les paramètres de l’application, assurant ainsi un contrôle total sur la confidentialité des données et les interactions avec l’application. De plus, ils peuvent ajuster un paramètre déterminant la température considérée comme chaude selon leurs préférences individuelles, leur permettant ainsi de définir leurs propres seuils de confort thermique. En outre, ils ont le choix entre les unités de température Fahrenheit ou Celsius, ce qui leur permet d’adapter l’affichage des données météorologiques à leurs préférences régionales ou personnelles. Enfin, j’ai intégré une fonctionnalité de thématisation, offrant aux utilisateurs la possibilité de choisir entre un mode sombre et un mode clair, ce qui garantit une expérience visuelle personnalisée et confortable.
Onboarding
Pour faciliter la prise en main de l’application, j’ai conçu un processus d’onboarding intuitif constitué d’une série de “slides” présentant de manière succincte les principales fonctionnalités de l’application. Ces diapositives guident les nouveaux utilisateurs à travers les différentes sections de l’application de manière transparente, leur permettant ainsi de découvrir rapidement et efficacement toutes les possibilités offertes par Cappsule.
Cette approche méthodique et diversifiée dans le développement des fonctionnalités a permis de créer une application robuste et conviviale, répondant aux besoins variés des utilisateurs sur les plateformes Android et iOS.
Acteurs
Au cours du développement de Cappsule, j’ai interagi principalement avec les plateformes de publication, notamment le Play Store et l’App Store. Cette interaction m’a demandé de comprendre et de répondre aux exigences spécifiques de déploiement d’applications sur chacune de ces plateformes. Les utilisateurs finaux de Cappsule ont également joué un rôle crucial, bien qu’ils ne soient pas directement impliqués dans le processus de développement. Leurs retours ont été précieux pour valider l’utilité et la fonctionnalité de l’application. Lors du déploiement de l’application sur l’App Store, j’ai reçu des retours constructifs de la part d’Apple concernant le manque d’onboarding initial que je n’avais pas envisagé. Cela m’a permis de prendre conscience de l’importance et de la nécessité de fournir une expérience d’onboarding pour les nouveaux utilisateurs. En tant que principal testeur de l’application, j’ai également sollicité les membres de ma famille pour des retours pertinents tout au long du processus de développement. Leurs observations, notamment sur la nécessité d’un choix manuel de température en l’absence d’accès à Internet, ont été précieuses pour améliorer l’expérience utilisateur. Enfin, les communautés Reddit ont joué un rôle important en fournissant un soutien et des conseils pour améliorer le design de l’application. Leurs suggestions ont contribué à optimiser la charte graphique pour une meilleure accessibilité, en ajustant notamment les contrastes de couleurs, ainsi qu’à améliorer la lisibilité du logo en proposant des modifications telles que l’épaississement des traits.
Résultats
Au-delà des compétences techniques acquises, l’expérience avec Cappsule m’a permis de comprendre l’importance de l’adaptabilité et de l’autonomie dans le développement de projets personnels. En naviguant dans l’écosystème du développement mobile, j’ai appris à anticiper les besoins des utilisateurs et à réagir de manière proactive aux retours pour améliorer continuellement mon travail. Pour moi, Cappsule représente une réussite significative, symbolisant une progression vers un niveau supérieur en développement mobile et en autonomie de projet. Bien que le nombre d’utilisateurs ait été limité en raison d’un manque de marketing, l’application a rempli son objectif en offrant une solution gratuite et personnalisée pour la gestion de la garde-robe, appréciée par ceux qui l’ont utilisée pour son efficacité dans le choix de tenues adaptées à la météo.
Lendemains
Après la clôture du projet Cappsule, je me concentre désormais sur l’application des compétences et des expériences acquises dans mes futurs projets professionnels. Bien que Cappsule soit terminée et fonctionne comme prévu, je n’ai pas l’intention de la maintenir ou de l’améliorer davantage. Mon objectif principal est de capitaliser sur cette expérience pour relever de nouveaux défis et poursuivre mon développement en tant que professionnel du développement mobile et de la gestion de projet. Je vais m’efforcer d’intégrer les leçons apprises dans mes futurs travaux, en tirant parti des succès et des échecs de Cappsule pour évoluer et progresser dans ma carrière.
Synthèse
Mon apport principal dans ce projet a été ma capacité à mener un projet complexe de manière autonome, démontrant ainsi ma polyvalence et ma capacité d’apprentissage rapide. Cappsule a également renforcé ma compréhension des enjeux liés à la conception d’interfaces et à l’expérience utilisateur sur mobile. Bien que le nombre d’utilisateurs soit resté limité en raison d’un manque de marketing, l’application a néanmoins rempli son objectif initial et continuera de servir de référence pour mes futurs projets.