Techso EN

La technologie au service de nos défis sociaux et sportifs

DEV, Géneral

L’humain est au cœur de nos préoccupations chez Techso, c’est pourquoi nous aimons nous rassembler et partager des bons moments ensemble. Nous avons pour habitude d’alimenter régulièrement notre club social par des activités diverses et variées. 

Le COVID est venu bousculer nos habitudes de rassemblement aussi bien au sein de Techso que de manière personnelle. Nous avons alors eu l’idée de se défier de manière individuelle et collective en mettant en place un challenge sportif!

Grâce à la créativité et aux compétences de notre équipe nous avons développé un outil permettant de comptabiliser les points du challenge. 

  1.     Notre premier challenge sportif – interne Techso. 

Nous souhaitions mettre en place un challenge qui nous incite à retrouver la motivation de pratiquer une activité physique après des confinements à répétition et l’hiver. La volonté était de proposer un challenge accessible à tous, peu importe l’activité sportive pratiquée et la zone géographique.

  • Exigences fonctionnelles.

Notre modèle de challenge a donc été le suivant : établir deux équipes et comptabiliser toutes les activités sportives (course à pied, vélo, ski, patins, marche/randonnée, musculation, etc…) sur une base de cumul du nombre d’heures.

La volonté était d’avoir un outil qui permette à tous les participants d’avoir accès aux heures cumulées de chaque équipe. En parallèle nous avons créé un groupe Strava afin de permettre à tout le monde d’enregistrer ou synchroniser leurs activités.

  • Mise en place technique.

Nous souhaitions commencer ce challenge le plus tôt possible, nous avons donc dû choisir des technologies qui permettent de mettre en place un Backend, une page web ainsi qu’une base de données rapidement. 

Pour la partie Backend, nous avons retenu Kotlin notamment pour son interopérabilité avec Java (compatibilité avec toutes les librairies et le code écrit en Java), mais aussi pour sa grande flexibilité, sa lisibilité et sa capacité à éviter les redondances dans l’écriture du code. Le backend a permis de créer des équipes, les éditer, ajouter du temps, calculer le pointage et intégrer l’API public de Strava via une connexion OAuth2 résultant d’une action utilisateur sur la page web.

Pour la partie web, nous avons choisi Angular 9. Le backend s’est occupé de servir les fichiers statiques requis au bon fonctionnement de la page web; et la page web a permis de visualiser, via un graphe, le progrès de chaque équipe, ainsi que d’importer ses activités Strava et administrer les demandes d’approbation des activités.

Pour la base de données, nous avons choisi MongoDB puisqu’il permet d’éviter l’écriture de fichiers de migration de données pour la majorité des cas. Il est aussi disponible en mode infonuagique gratuitement, ce qui permet de stocker jusqu’à 500 mégabits de données et d’écrire des modèles de données du côté backend de manière simple et rapide.

Enfin, nous devions pouvoir exposer publiquement sur le web notre application, si possible avec un nom de domaine gratuit pour permettre un accès rapide. Nous avons alors choisi Heroku qui permet de déployer une application gratuitement, tant que l’on utilise moins de 1000 heures de temps de processeur par mois. Heroku permet aussi d’avoir un nom de domaine gratuit, dans le format nom-de-lapp.herokuapp.com.

  1. Notre deuxième challenge sportif – contre Flinks.

 

Après le succès de notre première édition, nous souhaitions réitérer l’expérience en y apportant quelques variantes et en se mettant au défi contre une autre compagnie: Flinks.

 

  • Exigences fonctionnelles.

Cette fois, nous avons décidé de cumuler, non plus des heures, mais des kilomètres. Cette exigence nous a donc contraint de sélectionner certains sports: la course à pied, le vélo, la marche, la randonnée et le roller. Dans un souci d’équité nous avons pensé à mettre en place un système de points qui serait différent en fonction de l’activité sportive (par exemple il est plus facile de cumuler beaucoup de kilomètres à vélo en comparaison de la course à pied). 

Les points ont alors été attribué différemment en fonction des sports:

  • Course à pied (en extérieur ou sur tapis): 2,5 points / km
  • Marche et randonnée: 1,5 points / km
  • Roller: 1,2 points / km
  • Vélo (en extérieur ou stationnaire): 1 point / km

Il était alors nécessaire de mettre en place un calcul automatique des kilomètres en fonction des activités sportives.

Comme lors de la première édition, nous avons créé un groupe Strava afin d’enregistrer, synchroniser et visualiser les activités de chacun. 

  • Mise en place technique.

Comme toute l’architecture était déjà en place, les changements étaient majoritairement du côté programmation. Tous les morceaux ont été modifiés pour permettre de répondre aux attentes. 

Trois nouveaux modèles de données ont alors vu le jour dans la base de données. Le premier a permis de configurer l’application, ce qui était impossible avec la première version. Le second a permis de stocker les sessions utilisateurs pour éviter aux participants de se connecter à chaque fois sur Strava et de leur permettre de visualiser l’état de leurs demandes. Le dernier a été une valeur ajoutée puisque nous avons créé un nouvel onglet permettant de visualiser les statistiques des équipes en fonction des différents sports.

Côté back-end nous devions alors prendre en compte la nouvelle logistique de pointage. Pour la partie Strava il y a eu peu de changement: elle était déjà complète pour récupérer les données. 

La partie la plus délicate a été de transformer le temps en points en fonction des kilomètres sur une équipe, dans la création des demandes d’approbations. Quelques champs ont alors été ajoutés: notamment le pointage sans modification (dans ce cas-ci, le kilométrage brut), le taux appliqué (x2.5, x1.5, etc) en fonction du sport, ainsi que le pointage total, calculé à l’aide du taux. 

Grâce à ces nouveaux champs, les changements du côté de la page web étaient très mineurs et purement visuels, autant au niveau du graphique de points que de la page d’administration. Du côté web, nous avons pu ajouter une option de configuration permettant de passer du mode d’utilisation en temps au mode d’utilisation en points.

Nous avons su relever le défi de ces deux premières éditions tant au niveau du taux de participation et d’implication de chacun, qu’au niveau de la mise en place d’un outil qui rende la compétition plus attractive. Nous sommes désormais prêts pour une troisième édition, qui osera nous défier?

 

ANNEXE DES TECHNOLOGIES :