Dans l'article précédent, j'expliquais comment installer des apps sur une Gear S3 via SDB après la fermeture du Galaxy Store. Mais la méthode manuelle — télécharger un .wgt, lancer sdb push, lancer pkgcmd — est répétitive et rebutante pour la plupart des utilisateurs.
J'ai donc décidé de construire quelque chose de plus abouti : un store en ligne associé à un script CLI qui automatise toute la chaîne, du choix du cadran à son installation sur la montre.
Le store : gearS3.jnk.ovh
Le point de départ, c'est 113 fichiers .wgt éparpillés sur mon disque : 23 apps Samsung et 90 cadrans, tous signés, tous compatibles avec la Gear S3 (SM-R770 sous Tizen 4.0). J'avais besoin d'une interface pour les parcourir.
J'ai monté un site statique en PHP (un seul fichier index.php, selon la convention des autres sites du serveur). La mécanique est simple : le PHP scanne les dossiers apps/ et watchfaces/, lit le tizen-manifest.xml de chaque .wgt pour en extraire le nom officiel, et affiche le tout dans une grille Bootstrap-like.
Chaque fiche contient : le nom, un badge (App Samsung / Cadran), la taille du fichier, une description, une preview extraite automatiquement du shared/res/*.png du package, et un bouton de téléchargement.
Les descriptions ? Je les ai écrites manuellement — 23 en français, puis 113 traduites en anglais. Un fichier PHP avec deux tableaux associatifs. Basique mais efficace.
Côté technique :
- Design dark, responsive, sans framework CSS lourd
- Recherche textuelle + filtres par catégorie
- i18n FR/EN avec cookie de persistance
- Matomo pour le tracking
- Apache avec VirtualHost dédié, Let's Encrypt, redirect HTTP→HTTPS
L'API JSON
Le store web est sympa, mais l'objectif était de permettre l'installation automatique. J'ai donc ajouté une api.php qui expose les 113 items en JSON structuré avec l'URL directe de chaque fichier :
GET https://gearS3.jnk.ovh/api.php
{
"items": [
{
"name": "Pixel",
"type": "watchface",
"size": 402000,
"desc": "Cadran Pixel art...",
"url": "https://gearS3.jnk.ovh/watchfaces/Pixel.wgt"
}
],
"total": 113
}
Cette API est le pont entre le store et le script CLI.
Le script CLI : gearS3.py
Le vrai morceau. Je voulais un outil que n'importe qui puisse lancer — Windows, Linux ou Mac — sans avoir à installer des dépendances, sans compiler, sans pip.
Le choix s'est porté sur Python 3. Tout le code utilise uniquement la bibliothèque standard : urllib pour le réseau, subprocess pour les appels SDB, json pour l'API, pathlib pour les chemins. Zéro dépendance externe.
Fonctionnement
- Le script vérifie si SDB (Samsung Debug Bridge) est présent. Si non, il le télécharge automatiquement depuis le store — Linux ou Windows, détecté via
platform.system(). - Il interroge l'API et affiche une interface interactive paginée avec navigation, filtres (apps / watch faces), et recherche textuelle.
- L'utilisateur tape le numéro d'un item → le script demande l'IP de la montre (mémorisée pour la session) → connecte SDB → télécharge le .wgt → le push sur la montre → lance
pkgcmd -w -i -t wgt -p. - Les sorties de SDB sont streamées en temps réel. L'utilisateur voit le push progresser puis l'installation se dérouler.
Détails techniques notables
- Sécurité SSL — gestion des contextes SSL pour les machines Windows sans CA certs à jour
- Streaming SDB — utilisation de
subprocess.Popenavecstdout=PIPEpour afficher la progression en temps réel - Mode diagnostic —
python3 gearS3.py --checkteste la connectivité store, API et SDB - Portabilité — les chemins, les séparateurs et les extensions sont gérés par
pathlib, pas de hardcode
Hébergement de SDB
Pour éviter aux utilisateurs d'installer le Tizen Studio (plusieurs Go), j'héberge directement les binaires SDB sur le store :
- Linux :
sdb/linux/sdb(6,5 Mo, version 4.2.36) - Windows :
sdb/win/sdb.exe(4,8 Mo, version 4.2.36)
Le script les télécharge automatiquement dans le dossier courant. L'utilisateur n'a rien à installer à la main.
Le rôle de l'IA
Ce projet a été développé avec OpenCode (Deepseek V4 Flash), orchestrant plusieurs agents spécialisés :
- Exploration — analyse des structures .wgt, extraction des manifests, identification des patterns de preview
- Exécution — extraction des 6769 icônes depuis les 113 .wgt, rédaction des 226 descriptions FR/EN, configuration Apache
- Recherche — localisation des archives sur Internet Archive, analyse du marché Reddit, identification des besoins utilisateurs
- Rédaction — production de cet article
L'IA a permis de passer de l'idée au produit fonctionnel en une session de travail, là où un développement manuel aurait pris plusieurs jours — surtout sur la partie extraction des métadonnées et la rédaction des descriptions.
Liens
- gearS3.jnk.ovh — le store
- gearS3.jnk.ovh/api.php — l'API JSON
- gearS3.jnk.ovh/gearS3.py — le script CLI (téléchargement direct)
- gearS3.jnk.ovh/cli.php — guide d'utilisation du script
Conclusion
Ce projet était intéressant à plusieurs niveaux. Technique d'abord : manipuler des packages Tizen, comprendre SDB, construire une API, écrire un CLI multiplateforme. Mais aussi produit : le store répond à un vrai besoin — la communauté Gear S3 est active et cherche des solutions de sideloading depuis la fermeture du Galaxy Store.
Pour un recruteur, ce projet démontre : capacité à livrer un produit complet (frontend + API + CLI + infra), maîtrise de Python et PHP, conscience des contraintes multiplateformes, et autonomie sur toute la chaîne — du scan du filesystem au déploiement Apache.
Le code source du site et du script est accessible en direct : pas de repo privé, pas de démo factice. Ce qui est décrit ici tourne sur un vrai serveur, avec de vrais utilisateurs.