Recherche par étiquette : release
3 articles
Carnet d'entraînement 2.0.0
Carnet d'entraînement est disponible sur le Google Play Store. C'est un carnet numérique pour noter l'entraînement que vous faites vraiment : séances, exercices, et séries en répétitions ou chronométrées, avec leur poids ou leur élastique. Le tout hors ligne : aucun compte, aucune connexion, aucun serveur.

Si la version commence à 2.0.0, c'est que ce n'est pas un coup d'essai. À l'origine, il y avait une application Android mono-plateforme, écrite il y a quelques années, avant ma formation officielle. La 2.0.0 en est une réécriture complète en Kotlin Multiplatform : une seule base de code pour Android, iOS et Desktop.
Sous le capot
L'application repose sur Compose Multiplatform et Kotlin 2.4, et toute l'interface utilisateur est partagée —
pas une ligne d'écran spécifique à une plateforme. Le projet est découpé en modules Gradle core:*
et feature:*, avec une direction de dépendance stricte : domain est du Kotlin pur, data
implémente les interfaces que domain déclare, et les features s'ignorent les unes les autres. Les
écrans suivent le patron MVI, l'injection passe par Koin, et les
données vivent dans SQLite en local via SQLDelight :
des requêtes typées, aucune réflexion, et le même schéma sur toutes les cibles. La navigation
s'appuie sur Navigation 3.
Le minuteur de repos aura été le problème multiplateforme le plus intéressant. Entre deux séries,
un compte à rebours qui ne tourne qu'au premier plan ne sert à rien : l'alarme est donc confiée au
système plutôt qu'à une coroutine, via un ordonnanceur expect/actual qui s'appuie sur
AlarmManager sur Android et sur une notification locale sur iOS. Elle sonne à la fin du repos,
que vous ayez changé d'application ou verrouillé l'écran — et si la permission d'alarme exacte est
refusée, elle bascule sur une alarme inexacte au lieu de planter.
Tout a été écrit en TDD, guidé par ZOMBIES : près de quatre fichiers Kotlin sur dix
sont des tests. Ils couvrent la logique métier, les ViewModels, les requêtes SQLDelight, le graphe
Koin, la navigation, et l'interface Compose elle-même via runComposeUiTest. Chaque build passe
par detekt, avec règles adaptées à Compose.
Accessibilité
L'accessibilité fait partie des tests, ce n'est pas une passe de finition : compatibilité TalkBack, zones tactiles et écrans qui tiennent aux plus grandes tailles de texte et d'affichage, thèmes clair et sombre, français et anglais, et des mises en page conçues pour la tablette et le mode paysage.
Vos séances restent sur votre appareil. Vous pouvez les exporter dans un fichier quand vous voulez, et les restaurer tout aussi facilement.

My Simple Account Manager
J’ai développé une petite application utilitaire avec Jetpack Compose pour garder mes comptes et mes dépenses sous contrôle. Le projet répondait à deux objectifs principaux :
- Jetpack Compose – créer une interface utilisateur pleinement fonctionnelle avec Jetpack Compose, incluant une LazyColumn, des gestes de balayage (gauche/droite) pour des actions supplémentaires, et le réarrangement des lignes par glisser‑déposer.
- Architecture – mettre en œuvre une pile MVVM classique avec toutes les couches habituelles d’une application traditionnelle : appels réseau, requêtes vers une base de données locale Room, et accès en lecture/écriture au système de fichiers de l’appareil.
Fonctionnalités principales
- Créer, modifier et supprimer des comptes.
- Récupérer les taux de change depuis une API et convertir automatiquement les montants dans la devise sélectionnée.
- Prendre en charge toutes les monnaies mondiales actuelles.
- Ajouter ou soustraire des montants du solde d’un compte.
- Importer et exporter les données au format JSON pour faciliter la sauvegarde et la restauration.
Hair Technique Pro
Voici ma toute première application Android personnelle publiée sur Google Play, et c’est également mon premier projet entièrement réalisé avec Jetpack Compose.
J’ai commencé le développement mobile en utilisant Java et les mises en page XML. Après plusieurs années passées à maintenir d'anciennes applications, il m’a fallu un certain temps pour monter en compétence avec Jetpack Compose ainsi que son architecture et bonnes pratiques.
Cette première application m’a permis d’expérimenter les composants de base, Material 3, la navigation, la gestion d’état et des animations simples.
