Vinarnt Portfolio

Animu Finder

Préambule

Développé en javascript, premièrement en tant que site pour navigateur et ensuite transformé en application de bureau à l'aide d'Electron, Animu Finder est une application permettant de lister les liens de streaming d'animés à la volée depuis plusieurs sources.
Deux prototypes avec des stacks technologiques différents l'ont précédé.

Kotlin/JVM et TornadoFX(JavaFX)

Tout d'abord, un stack Kotlin/JVM + TornadoFX (Une librairie Kotlin facilitant l'utilisation de JavaFX avec kotlin). JavaFX est une grande évolution, dans le domaine de l'interface utilisateur, qui va dans le bon sens par rapport à Swing/AWT mais reste peu populaire et par conséquent, manque de contenu.

Kotlin/JS et React

Le deuxième prototype utilise encore Kotlin mais cette fois-ci, sa variante Javascript couplée à React.
Le problème notable est que pour utiliser les librairies Javascript, il faut tout d'abord créer un wrapper pour interfacer Kotlin au code javascript. En principe le code Javascript peut être exécuté directement dans le code Kotlin mais l'avantage du typage de Kotlin est alors perdu et la lisibilité est mise à mal.
Il existe un outil permettant de traduire automatiquement les définitions Typescript en Kotlin, pratique pour traduire les définitions disponibles sur le GitHub DefinitelyTyped, mais il ne gère pas tous les cas, rendant son efficacité faible dans la plupart des cas.

Javascript, React et Electron

Il s'agit du stack définitif, premièrement sans electron directement dans le navigateur.
J'utilise Rematch à la place de Redux pour sa simplicité et Axios pour lancer des requêtes.

Le passage vers Electron a été obligatoire pour pallier au problème de CORS induit par AJAX. En effet Axios utilise XMLHttpRequest lorsqu'il est utilisé dans un navigateur et la lib http de node lorsqu'il est dans un environnement Node.js. Electron étant un environnement Node.js, Axios utilise le protocole HTTP pour envoyer des requêtes, et passe donc outre le système de CORS d'AJAX.