Projet réalisé dans le cadre du cours de LO10 - Architecture Orientée Services. Membres de l'équipe :
- Florian Bonelli
- Florian Chaffard
- Luna Schenk
"Un service alliant le suivi des tendances cryptos et la parodie de l’imprédictibilité des marchés."
Le projet a pour but de créer un site web permettant de visualiser les tendances des cryptomonnaies, les actualités liées à celles-ci ainsi que d'obtenir des prédictions personnalisées basées sur des informations personnelles de l'utilisateur. Le projet joue sur l’illusion de la prédiction pour critiquer le caractère imprévisible des marchés.
Nous voulons également permettre à l'utilisateur de s'informer sur les tendances en cryptomonnaie tout en améliorant la transparence des gains et des pertes réelles en fonction des tendances des différentes cryptomonnaies. Cela permet de sensibiliser aux risques liés à l’investissement dans les cryptomonnaies et à leur caractère imprévisible.
- Horoscope API : API permettant de récupérer les horoscopes quotidiens pour chaque signe astrologique.
- Binance API : API permettant de récupérer les données financières des cryptomonnaies.
- CoinTelegraph RSS : Flux RSS permettant de récupérer les actualités liées aux cryptomonnaies.
- Calcul gain/perte : Service permettant de calculer les gains et pertes en fonction des tendances des cryptomonnaies.
- Reformulation IA : Service permettant de reformuler les horoscopes pour les rendre plus adaptés à la cryptomonnaie. (Modèle ollama tournant en local, API REST).
- CouchDB : Base de données NoSQL permettant de stocker les données des utilisateurs.
Notre projet utilise un reverse proxy NGINX afin de centraliser et sécuriser l'accès à l'ensemble des services, qu'ils soient internes (API de prédiction, calculs, IA) ou externes (Binance, Horoscope, CoinTelegraph). Grâce à NGINX, toutes les requêtes des utilisateurs transitent par un point d'entrée unique, ce qui facilite la configuration du CORS ou encore la maintenance en cas de modification des services consommés. De plus, cela permet de simplifier l'architecture en masquant la complexité des différents services et en assurant une meilleure évolutivité et maintenance du projet.
Le projet utilise la négociation de type média pour permettre aux clients de spécifier le format de réponse souhaité (JSON ou XML) lors des appels aux API. Cela permet d'offrir une flexibilité aux utilisateurs et de s'adapter à différents cas d'utilisation. En fonction du type de contenu demandé, le serveur renvoie la réponse dans le format approprié, facilitant ainsi l'intégration avec différents clients et langages de programmation.
Le projet utilise le patron de conception Tolerant Reader pour gérer les variations dans les réponses des API externes. En raison de la nature dynamique des données financières et des horoscopes, il est possible que certaines informations soient manquantes ou diffèrent légèrement d'une réponse à l'autre. En adoptant ce patron, nous avons conçu notre code pour être résilient face à ces variations, en s'assurant que même si certaines données sont absentes ou modifiées, le système continue de fonctionner correctement et de fournir une expérience utilisateur fluide.
cd frontend
npm installcd backend
npm installcd frontend
npm startDepuis la racine du projet :
docker-compose up