Pour disposer d'une interface simlaire sur toutes ces plateformes, l'approche de l'app web affichée via une WebView me semble la plus pertinente. Cela permet en effet de n'avoir qu'une version à maintenir qui réalise la logique d'affichage et d'interaction via des pages HTML et du code javascript. Un petit coup d'angular pour pouvoir faire ça proprement, et un bon vieux bootstrap des familles pour être responsive et gérer d'un coup toutes les tailles d'écran, et voilà ton interface. Rien de très neuf, tu l'avais suggéré.
En ce qui concerne le packaging, c'est un peu plus tendu déjà. Je ne connais pas de conteneur unique qui fasse tout ça pour toi, mais tu peux regarder du côté de PhoneGap et Cordova pour le mobile, ce qui te permet de supporter Android, iOS, FirefoxOS et une floppée d'autres sans trop se prendre la tête. Il existe aussi des équivalents pour desktop, comme node-webkit
ou atom-shell
. J'ai jamais vraiment joué avec ceux-là, mais ça marche (même si il paraît que les packages sont un peu lourds du fait de shipper avec un chromium). Encore une fois, on est plutôt cross-platform, puisque c'est sensé tourner sous Windows, OSX et Linux.
La partie chiante, c'est les API non web-natives, comme les accès aux fichiers ou la DB. Il y a un peu de travail là dessus pour fournir une API indépendante de la plateforme, mais les outils cités permettent tous deux d'accéder à un SQLite et au système de fichiers. Il s'agit juste de faire des wrappers pour appeler les bonnes méthodes selon que l'app tourne dans un conteneur cordova ou desktop.
Le lecteur attentif remarquera qu'on ne parle point de Python (c'est con sur un QA axé python quand même), puisqu'on est sur une stack quasiment full-web du point de vue du développeur, avec toute la logique en JavaScript (à moins d'un peu de code natif pour écrire des plugins Cordova par exemple, mais t'auras certainement pas besoin d'en arriver là) et l'affichage en HTML+CSS. Au vu des technos dispos aujourd'hui, j'ai pas mieux à proposer.