Projets

$ ls -la ~/projets --details

Illustration du projet Records, une collection de disques au mur

Une galerie pour une collection de vinyles et de CD. La collection elle-même vit sur Discogs ; l'application l'y synchronise, puis ajoute ce que Discogs ne propose pas : un mur de pochettes, un ordre manuel, des favoris et un filtrage instantané. Synchronisation quotidienne programmée, et suppression douce pour ne jamais perdre un disque retiré de la collection.

  • Next.js
  • TypeScript
  • Tailwind CSS
  • API Discogs
  • +1
Illustration du projet Ce portfolio

Le site que vous lisez. Une façade terminal interactive (démarrage animé, navigation par commandes, autocomplétion, historique) doublée d'une navigation classique toujours visible, et un CV PDF compatible ATS engendré au build depuis la même source que les pages. Entièrement statique : le contenu est un module du dépôt, le site se construit une fois et se sert comme des fichiers.

  • Nuxt
  • Vue
  • TypeScript
  • Tailwind CSS
  • +2
Illustration du projet Infra, un serveur web déployé en une commande

Un playbook Ansible qui met en ligne sept applications web sur un VPS Oracle ARM, derrière Cloudflare. Les sites statiques n'ont pas de conteneur : leur image est construite, son contenu web extrait, et Caddy le sert directement. Aucun conteneur ne tourne en root, les ports 80 et 443 n'acceptent que les plages Cloudflare, et les bases SQLite sont sauvegardées chaque nuit. Un manuel jumeau rejoue chaque rôle à la main, commande par commande.

  • Ansible
  • Docker
  • Caddy
  • Ubuntu
  • +3
détails
Illustration du projet Echo, sonification de textes et d'images

Transforme un texte ou une image en pièce musicale, entièrement dans le navigateur. Aucune IA générative : l'analyse de l'entrée en dégage une intention musicale, traduite en motifs Strudel puis jouée hors ligne, et le résultat se télécharge en MP3, FLAC, WAV ou OGG. Aucune donnée ne quitte la machine, et le même contenu produit toujours exactement le même son. Projet entièrement vibe codé.

  • React
  • TypeScript
  • Strudel
  • Tone.js
  • +3
Illustration du projet LifeGlobe, le jeu de la vie sur un globe

Le jeu de la vie de Conway projeté sur une Terre en 3D : les cellules ne vivent que sur les continents émergés, les océans restent vides. Deux rendus, hologramme et réaliste, une grille configurable jusqu'à 2880 × 1440 cellules, et un suivi de la population génération par génération.

  • React
  • TypeScript
  • Three.js
  • WebGL
  • +2
Illustration du projet Vélib' Paris, carte en temps réel

Les quelque 1500 stations Vélib' de Paris sur une carte, avec les vélos et les places disponibles en direct depuis l'open data de la Ville de Paris. Regroupement en clusters qui se déplient au zoom, rafraîchissement toutes les deux minutes trente sans reconstruire les marqueurs, et mode plein écran.

  • JavaScript
  • Leaflet
  • SCSS
  • Webpack
  • +1
Illustration du projet InfoCrypto, suivi des cryptomonnaies

Les cent premières capitalisations, actualisées chaque minute depuis l'API CoinGecko, avec une recherche sur l'index complet et une fiche par monnaie : prix courant, variation sur 24 heures, rang de capitalisation, offre en circulation et deux graphiques de prix.

  • JavaScript
  • Chart.js
  • Bootstrap
  • Mustache
  • +2
Illustration du projet React Slides, des présentations en composants

Une bibliothèque pour écrire ses présentations en React : chaque diapositive est un composant assemblé à partir de primitives de mise en page et de contenu. Navigation au clavier, vue mosaïque, plein écran, thème partagé, Markdown et coloration syntaxique.

  • React
  • Vite
  • Tailwind CSS
  • Markdown
Illustration du projet APOD Wallpaper, le ciel du jour en fond d'écran

Une application de bureau qui récupère chaque jour l'image astronomique du jour publiée par la NASA et la pose en fond d'écran. Elle vit dans la barre des menus, sans fenêtre le reste du temps. Trois modes : image du jour, date au hasard dans les archives depuis 1995, ou date choisie. Les images plus petites que l'écran sont posées sur un flou d'elles-mêmes plutôt que déformées, et les entrées vidéo sont ramenées à une image fixe. Écrite en Rust avec Tauri, le panneau de réglages en React. Publiée pour macOS dans un premier temps, les autres plateformes étant l'objectif.

  • Rust
  • Tauri 2
  • React
  • TypeScript
  • +2
détails
Illustration du projet WLKOM, un rootkit Linux pédagogique

Un rootkit Linux écrit en module kernel, avec deux objectifs : apprendre la logique interne de Linux, de son kernel et de ses modules, et comprendre par où un système se fait prendre. Chargé sur une machine victime, il rappelle de lui-même la machine de contrôle et attend des ordres, se reconnecte s'il perd le lien et survit au redémarrage. Il se retire des listes de modules, masque des lignes dans les fichiers en détournant un appel système de lecture, et obfusque ses échanges. En face, un programme d'administration en terminal reçoit la connexion, authentifie le module et lui passe des commandes. Le tout se déroule entre deux machines virtuelles isolées, jamais sur une machine réelle.

  • C
  • Module kernel Linux
  • Hook syscall
  • Python
  • +3
détails