Jarvis est mon plus grand projet de developpement : un veritable ecosysteme personnel, deploye sous mon propre nom de domaine via Docker Compose et organise en monorepo. Il regroupe une application web, une API REST centrale, un systeme d'authentification securise, plusieurs bots d'automatisation, une integration materielle Arduino, une application mobile native et meme un modele de langage entraine localement.
L'architecture s'articule autour d'un reverse proxy Nginx assurant le SSL (avec fail2ban pour bloquer les tentatives d'intrusion) et repartissant le trafic entre trois sous-domaines : le front web, la page d'authentification et l'API. Cote donnees, trois bases MySQL distinctes separent les comptes utilisateurs, les donnees de l'application (contacts, notes, agenda, messages, todo list...) et les bots.
Le cœur applicatif repose sur une API construite avec FastAPI, qui gere l'authentification par JWT et centralise l'ensemble des integrations tierces : meteo (OpenWeatherMap), actualites (NewsAPI, NewsData.io, GNews), Google Calendar et Spotify (OAuth2), GitHub, frequentation des parcs d'attractions (Queue-Times), donnees d'entreprises francaises (Pappers), ainsi qu'un pont serie vers une carte Arduino relayant temperature et etat d'un ventilateur. Le front web en PHP consomme cette API pour afficher les differents tableaux de bord (meteo, notes, agenda, contacts, todo list, recherche, parametres), le tout protege par une page de connexion dediee qui limite les tentatives (3 essais avant blocage de 24h) et journalise les acces.
Trois bots autonomes viennent completer l'ecosysteme : Hermes recherche des offres d'emploi (LinkedIn, Indeed, HelloWork, Welcome to the Jungle) et prepare des candidatures sans jamais rien envoyer sans validation humaine explicite ; Indiana explore un sujet donne sous plusieurs angles, scrape et dedoublonne le contenu pour en exporter une synthese Markdown ; Walt surveille les prix des billets, hotels et offres en cours des parcs Disney. Un dernier service tourne en tache de fond pour envoyer des notifications quotidiennes par email (meteo, agenda, anniversaires, todo list) et des rappels d'evenements.
Au-dela du serveur, l'ecosysteme comprend une application Android native en Kotlin/Jetpack Compose reprenant les fonctionnalites du front web, ainsi qu'un projet de fine-tuning d'un modele de langage en local (QLoRA sur une RTX 3080, export au format GGUF et mise a disposition via Ollama) a partir d'un jeu de donnees d'instructions en francais genere pour l'occasion.
Toute la stack dispose egalement d'un environnement de developpement totalement isole de la production (reseau, conteneurs, volumes et base de donnees dedies), avec des garde-fous automatiques qui desactivent l'envoi d'emails reels et la candidature automatique d'Hermes tant que l'on travaille en local.
Technologies utilisées :