Une application de sport

Application minimaliste d'entrainement sportif ( Projet d'entrainement )

Le problème exposé dans ce sujet a été résolu.

Bonjour !

J’ose enfin faire mes premiers pas dans cette partie du forum :) Je vais commencer par poser le but du projet, l’entrainement ! Je me suis mis cette année au C# et je profite d’un stage de fin d’année pour faire un projet personnel sur la même technologie, en plus ça tombe bien, je n’arrivais pas à trouver une application de sport qui me conviennent donc autant faire une pierre de coup. ^^

Cahier des charges du projet

Points Clés

  • Création d’une application en Xamarin (framework .NET pour faire des applications mobile cross-platform. J’ai choisi cette technologie car je veux apprendre le développement d’application mobile en C#. (Et booster mon CV :p ) )

  • Stockage des données local en Sqlite (J’ai choisi Sqlite car je l’ai déjà utilisé en java pour créer une application mobile avec android Studio et il correspond à mes besoins en termes de performances.)

  • Utilisation du design pattern MVVM avec la librairie Prism (J’ai hésité pendant un moment avec ReactiveUI qui est plus complexe et plus long à apprendre mais qui permet plus de choses. Vue le nombre de nouveautés dans se projet, j’ai fini par choisir Prism pour sa simplicité.)

  • Faire une application minimaliste, pas une usine à gaz avec X options.

  • Si j’avance assez vite, je compte aussi essayer la librairie SkiaSharp qui permet de faire des composants graphiques (un chrono personnalisé, une page en plus avec un diagramme de l’activité en fonction du temps…)

  • Et pour finir, si possible rendre l’application disponible pour Android et iOS. (Pour le début je me focalise sur android, car c’est l’OS de mon téléphone. L’implémentation iOS déprendra de la vitesse d’avancement du projet aussi … et de mon courage :D )

Détail des pages

  • La page principale affiche les exercices du jour, un bouton pour lancer les exos du jour et un bouton pour ajouter un exercice.

  • La page "ajouter un exercice" contient une liste de tous les exercices créent et un bouton pour créer un exercice.

  • La page de création d’exercice contient les champs :

    • nom de l’exercice
    • nombre de série
    • nombre de répétition
    • Temps de repos
    • Couleur (Je ne sais pas si je compte l’utiliser plus tard, c’est peut être de trop (usine à gaz?))
    • Catégorie (Un exercice peut avoir une seule catégorie)
    • Ajouter une nouvelle catégorie (c’est sur une ligne, un textebox puis le bouton. il n’y a pas de sous-page)

Avancement du projet

Pour le moment, j’ai des prototypes sur papier de chaque page (même les pages "bonus", je me suis fait plaisir :D ), j’ai créé une app xamarin avec prism qui fonctionne dessus (1 journée pour ça sérieux ><), Sqlite fonctionne aussi et j’ai commencé quelques pages xaml. (J’enverrai des screens quand elle seront "plus avancé" graphiquement)

Voila un screen de l’ajout d’exercice pour vous donnez une idée : Écran d'ajout d'exercice

Le setup est fini, il reste que du plaisir maintenant ! Se sujet est aussi la pour me motiver à avancer correctement, A bientôt pour des nouvelles et des images =)

+2 -0

Petite mise à jour !

Une bonne partie des fonctionnalités ont été ajoutées :

  • Créer un exercice / une catégorie
  • Supprimer un exercice / une catégorie
  • Système de liste d’exos sélectionnable pour les ajouter à une journée
  • Système de "sauvegarde de la semaine"

Le plus gros qui reste à faire est l’écran avec le chrono/timer, l’activité en cours et deux trois autres infos.

Quelque images :

Je ferais peut-être une vidéo quand le projet sera plus abouti pour mieux détailler le fonctionnement de l’application. :)

+0 -0

Pour ceux qui ne font pas de muscu au poids de corps, pouvoir rajouter la masse des altères pour les séries peut-être pas mal non ?

Enfin, ceci serait dans le cas où on puisse saisir sa progression, ce qui ne semble pas être le cas en lisant la spec de ton projet. Le projet semble (pour l’instant en tout cas) permettre uniquement de créer ses programmes avec des exos, mais pas de saisir sa progression de la séance.

Banni

Je ne sais pas si c’est ce que voulait dire @Heziode car je n’ai pas trop bien compris son deuxième paragraphe mais ce que je trouverais mieux, ce serait de pouvoir faire varier le nombre de répétitions, séries, repos, etc. sans avoir à recréer un exercice différent à chaque fois. Personnellement je fais ce que je me sens de faire chaque jour, du coup un jour ça peut être 3 séries, un autre jour 5… (J’utilise un tableur et ça fonctionne bien aussi pour se motiver.)
Une autre remarque : ce n’est pas très adapté de parler de "nombre de répétitions" pour un exercice comme le gainage. Peut-être qu’il faudrait plutôt, pour chaque exercice, ajouter des champs au choix de l’utilisateur (une durée, un nombre, un poids, un simple champ texte pour mettre des "remarques" par exemple, comme si c’était trop dur ou pas…), que ce soit ça qu’on paramétrise dans la création d’un exercice, et que ces champs soient à remplir au jour le jour.
Ensuite, peut-être que tu pourrais ajouter pour chaque exercice l’heure à laquelle on l’a réalisé (si on fait plusieurs séances dans une journée par exemple, pour le temps de repos entre les exercices…).

Merci pour toutes vos réponses ^^ ça donne des idées pour approfondir l’application ! =P

@Nostalgique_ZdS Moi aussi ! xD C’est pour ça que je veux faire un projet de A à Z correctement .

@Heziode Effectivement, ajouter un champ "poids" est facilement réalisable et me demande uniquement de modifier le stockage. Pour ce qui est de la progression, je compte faire une partie "statistique" mais ce n’est pas la priorité, je me pencherais la dessus uniquement quand le "fonctionnel" sera en place. (Si je fais une partie statistique, il n’y aura pas beaucoup de "saisi" à faire car je compte récupérer les informations des exercices directement.)

@bloyhg Il y a un écran que je n’est pas encore fait (le plus important d’ailleurs…) c’est celui de la séance "en cours"(avec un chrono et des infos) je pourrais faire en sorte de pouvoir modifier directement le nombre de séries/répétitions de l’exercice en cours la dessus. =)

Par contre pour l’idée de générer des champs "au choix" je ne pense pas que ce soit possible. (Après quelque recherche, générer du code xaml sur mobile semble être une mauvaise idée, surtout que ce n’est pas/peu compatible avec le MVVM.) Je peux peut-être penser la page différemment avec des boutons de sélection (durée ou répétition / poids du corps ou non) après le but était de faire un truc très simpliste et facile d’utilisation … du coup j’hésite entre le pour et le contre.(Avoir plus de flexibilité mais plus long/compliquer à utiliser ou un truc plus simple mais incomplet.)

+0 -0

Petite mise à jour !

L’écran de la séance en cours est créé =) (Bon, il manque des trucs mais il y a la base.)

J’ai aussi pu utiliser la librairie Essentials (qui est une boite à outil génial ! :waw: ) pour ajouter une vibration quand chrono arrive à 0. (La librairie Essentials permet de faire toute la gestion des droits et des fonctionnalités de bases comme l’Accéléromètre, le Baromètre, la Batterie, le Presse-papiers, la Connectivité, la Détection des secousses… etc)

Ecran de la séance en cours
Ecran de la séance en cours
+0 -0

Enfin j’ai un rendu graphique pour la partie statistique ! Il y a aussi eu des petites modifications graphique pour la page "en cours de séance", une gestion des données qui n’étaient pas stockés (Du moins, pas correctement pour pouvoir produire les graphiques derrière) et des petits debugs … (du genre, sur le chrono on passait de 1 minute … à 60 secondes … en une seconde … :facepalm:)

Enfin bon ! Voilà deux petits screens pour avoir un visuel là-dessus ! (Les données sur la page de statistique sont fausses (en dur dans le code) pour le moment je me suis uniquement concentré sur le rendu visuel.)

Page "en cours" Page statistique

Je pense avoir bientôt fini les objectifs que je m’étais fixés. Voilà la liste des prochaines modifications à faire :

  • Faire la partie "logique" de l’affichage de statistique.
  • Modifier le système de catégorie qui a quelque bugs encore.
  • Ajouter le poids dans les données (Je ne l’ai pas encore fait car pour créer toute la partie "logique" de l’application je ne voulais pas jongler avec des tonnes de données. Certes je vais devoir re-modifier un grand nombre de page mais je préfère faire en une fois tous les ajouts de données "annexes" après y avoir bien réfléchi plutôt que de les ajouter en cours de route à chaque fois.)
  • Système d’import et d’export de sauvegarde de données, surement au format JSON.
  • Faire une grosse refonte graphique de toutes les pages car je suis absolument horrible en UI/UX mais je veut finir la partie "fonctionnel" avant de creuser dans ces connaissances la.

Je fais un double post pour vous poser une question, en UI/UX, vous trouvez mieux d’utiliser des logos ou bien des boutons avec du texte écrit dessus ? Voici deux versions, l’actuel à gauche et une maquette (faite sur paint patapé :ninja: ) à droite. Le but est de changer les quatre boutons du bas par un tabview et des boutons dans la barre du haut.

  • I/E = import export

  • DA = daily activity

  • S = statistics

  • Le bouton + c’est pour ajouter des exercices.

  • Le rond cassé, c’est normalement un bouton options.

Bon ce ne sera pas des lettres dans la version finale mais comme dit ci-dessus, j’ai fait cela sur paint.

Mon dilemme est que celle de droite est normalement plus épuré/jolie/lisible mais pour un néophite je la trouve moins explicite. Votre avis ?

Page actuel Page futur ?

ps : Si vous connaissez un logiciel pour faire des maquettes gratuitement je suis preneur ! Tous ceux que j’ai testé sont bien mais ce sont des versions gratuites pour un mois ou deux puis après il faut passer à la caisse. Pour un petit projet personnel ce n’est juste pas possible.

La partie statistique est fini ! (Il y a quelques bugs mineurs avec l’affichage des noms sur le bord de l’écran mais la logique est faite avec un rendu visuel correct.)

Il y a eux d’autres modifications graphiques (Un résultat intermédiaire entre les deux images du dessus). La fonction "éditer un exercice" fonctionne enfin ! (rien de compliquer, je n’avais juste pas envie de la faire car c’était très basique et ennuyant à coder.)

Voici des screenshots de la partie Statistique :

Timeline d'un exercice Tout les exercices Toute les catégories

(Le premier screen est fait avec des fausses données pour tester le système de scroll horizontal et monter les variations de hauteurs.)

Avez-vous des idées d’améliorations ? J’aimerais bien faire une liste de toutes les idées pour implémenter tout cela d’un coup.

Améliorations à faire :

  • Ajouter une variable de poids aux exercices.
  • Système d’import / export de sauvegarde.
  • ?
+1 -0

Le système d’import et d’export est terminé ! J’ai utilisé la librairie FilePicker qui permet d’ouvrir une fenêtre de navigation dans les fichiers du téléphone.

Correction de deux bugs majeurs qui faisais crash l’application. (Un sur la page de statistique et un lors de la création de nouveaux exercices.)

Voici quelques images :

Page par défaut Confirmation de sauvegarde Confirmation d'importation Navigation avec FilePicker

Bon, c’est moche, mais ça fonctionne ! x’) Il me reste quelque modifications de sécurité, l’ajout du poids et de l’icône de l’application puis je l’envoie sur le play store. \o/

+0 -0

Re ! Avec la reprise des cours je n’ai pas été très actif !

L’application est enfin publiée sur le play store, voici le lien : Little Sport App

Elle n’est pas très jolie, mais elle est fonctionnel ^^ Pour une première experience solo dans le milieu du mobile, c’était un bon entrainement et en plus pour moi elle est utile durant mes entraînements sportifs ! =P

S’il y a des bugs ou des améliorations fonctionnel légère, je ferais des mises à jour. Par contre je ne compte pas re-développer toute la partie graphique ou le fonctionnement de l’application. Je préfère faire une nouvelle application à part ^^

Je vais marquer le sujet comme résolut au passage (je n’ai rien à ajouter de plus mise à part les hypothétiques potentielles maj sur le sujet. =P )

+0 -0

Je vais tester ça de ce pas (l’app Notes ça devient limite pour noter les séances), l’application a l’air bien faite avec des features utile, et y a surtout une grande perspective d’évolution en terme de design et de fonctionnalités donc tu devrais pas t’ennuyer à mon avis.

Tu comptes rendre l’app open source ?

EDIT: Sur le Play Store, l’app s’appelle "Minimaliste Sport App" il serait plus judicieux de mettre "Minimalist Sport App" car il n’y a pas de "e" en anglais.

EDIT 2: Sur l’ajout des exos, il y a "série" et "répétions" mais si par exemple le Mardi j’ai fait Pompe 5x20 et que mercredi je fais Pompe 5x25, je ne peux pas l’indiquer car si si je change sur un jour ça change sur tous les jours.

+0 -0

Merci pour le retour =)

Pour le nom, "Minimaliste Sport App" est la dénomination française. Je ne crois pas l’avoir précisé au-dessus mais l’application est disponible en français et en anglais, donc little sport app est uniquement afficher si ton téléphone est paramétré en anglais. =P (Après je trouve que Little sport app est plus jolie donc j’hésite à mettre un nom unique …)

Pour la modification des séries et des exercices il est possible de les changer pendant l’entrainement. Effectivement cela change la valeur "définitivement" dans le sens ou la modification est concervée pour plus tard. Cela est un partie pris de ma part, je considère que si je fais 10 pompes la première fois, et 15 au bout de 3 semaines, je ne régresse pas. Donc pour éviter de devoir modifier la valeur tous les jours, la "nouvelle" quantité enregistrée est définie comme par défaut.

Screenshot pour plus de clarté :

Les valeurs peuvent être modifié ici
Les valeurs peuvent être modifié ici

Pour la notion d’enregistrement, je devrais faire une note (un logo avec un point interrogation ?) pour préciser sont fonctionnement. "si par exemple le Mardi j’ai fait Pompe 5x20 et que mercredi je fais Pompe 5x25, je ne peux pas l’indiquer car si si je change sur un jour ça change sur tous les jours."

La notion de planification et de statistique sont complètement dissocié. Les valeurs de ton entraînement ne sont pas liées à ton affichage journalier / semainier. Les statistiques de tes entraînements sont enregistrées à partir du moment où tu valide un exercice. Normalement à ce moment précis, l’exercice disparait de la liste "autres exercices du jour" et est enregistré en tant qu’exercice effectué dans la partie statistique de l’application. Si tu finis un entrainement SANS valider les exercices, l’application considère que rien n’a été fait.

Je te conseil de regarder la partie statistique pour mieux te rendre compte. Il y a un écran avec le nombre de répétition total pour chaque exercice effectué.

Exemple :

Ecran de statistique par exercice
Ecran de statistique par exercice

J’ai déjà eu un retour d’un ami pour le mot "éditer" dans la version française qui est trop grand et fait un retour à la ligne (J’utilise personnellement mon téléphone que en anglais :s). Si tu a des idées d’améliorations ou si tu trouve des bugs graphiques / fonctionnel je suis à l’écoute ! =)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte