Pour me motiver à me bouger un peu et faire l'entraînement de One-Punch Man, je me suis fait une petite appli maison, disponible sur mon Github.

À la base, je notais mes répétitions dans un petit carnet, avec une date et une colonne par exercice. Sauf que je trouve ça fastidieux et prompt à l'oubli.

Du coup, je me suis dis "Tiens, et si on se lançait dans une petite app maison". Et vlan.. c'était parti.

L'application

Mobile En soi, l'application est très (très) sommaire. Il s'agit tout bonnement d'un CRUD pour les exercices et d'une sauvegarde par jour et par exercice. Mais voila, j'aimerai y ajouter des stats.

J'ai donc opté pour un petit tableau qui reprend exactement ce que j'avais sur mon cahier et là est arrivée la première petite difficulté.

Je n'arrivais pas à construire ma requête SQL pour obtenir correctement ces valeurs, à savoir pour chaque exercice, le nombre de répétition par jour, le tout regroupé à chaque jour d'entraînement.

image

C'était sans compter l'excellent site laravelexamples.com et la catégorie "GroupBy" qui m'a permis de me mettre sur une piste.

Plutôt que de construire une requête SQL imbuvable et complexe, autant ramasser les données que j'ai besoin et exploiter la puissance des collections.

Et c'est ainsi qu'est né SortTrainingsByDate.php, qui permet donc de réagencer ma collection de Training en groupant mes répétitions d'abord par date, puis par exercice.

J'ai aussi mis une petite API qui ne fait que renvoyer les répétitions du dernier entraînement, afin de l'afficher sur mon dashboard personnel.

Hébergement

Comme je m'entraîne à la maison, je voulais un truc bien simple accessible depuis n'importe quel appareil connecté à mon réseau. N'ayant pas de grandes connaissances en administration réseau, c'est surtout là où j'ai bien lutté.

J'ai installé un serveur LAMP sur un Raspberry-Pi 3, puis j'ai installé dnsmasq afin qu'il serve de serveur DNS pour qu'il puisse gérer des domaines locaux menant à mes applications.

Malheureusement je ne suis pas parvenu à le faire bien fonctionner, je pense avoir mal configuré mon routeur. Pour le coup, j'ai viré dnsmasq et je suis passé à pi-hole.

Pi-Hole est avant tout un bloqueur de pubs et de domaines indésirables (malware, phishing, etc.). Cela faisait un moment que je voulais l'essayer et l'opportunité s'est présentée.

En plus de bloquer les méchants, Pi-Hole permet d'ajouter des entrées DNS, me permettant aisément de lier mes applications Laravel à des domaines. Et je me suis fait un kiffe, j'ai maintenant des domaines en .rachid, c'est quand même la classe à Las-Vegas.

Conclusion

Bien content de ma petite appli, et surtout d'avoir su surmonter les défis techniques que présente la configuration réseau !

J'aimerai ajouter d'autres features notamment des graphiques afin de bien suivre l'évolution mais bon avant tout ça faudra d'abord l'alimenter de données et ça, ça veut dire ... qu'il va falloir que je m'entraîne!