Tom Exzitech

Disponible pour de nouvelles missions

Développeur full-stack freelance

Je crée des sites et des applications web ou de bureau, j'automatise ce qui n'a pas d'API et j'installe des serveurs que les petites structures peuvent garder sans informaticien. Ce qui est présenté ici sert tous les jours, et la plupart des projets s'essaient directement dans le navigateur.

Voir les projets Parler d'un projet

01 Ce que je peux faire pour vous

Sites vitrines

Un site à votre image, rapide sur téléphone, en plusieurs langues si votre clientèle le demande, avec un formulaire de contact qui arrive vraiment chez vous.

Applications sur mesure

Outil interne, tableau de bord, application de bureau ou mobile : une interface simple posée sur une logique testée.

Automatisation et données

Récupérer des données d'un logiciel sans API, d'un écran ou de documents scannés, puis les fiabiliser et les exploiter. Simulation quand le résultat dépend du hasard.

Auto-hébergement

Fichiers partagés, mots de passe et documents classés sur votre propre serveur, avec des sauvegardes vérifiées et des alertes qui arrivent même quand la machine est éteinte.

02 Projets

Chaque projet a son dépôt public : le code, les tests et un README qui explique les choix.

Application de bureau

Tauri · Rust · React · Python

ExziHub, une application dont chaque outil est un plugin

Le socle des autres projets. Les outils s'installent, se mettent à jour et se désinstallent depuis un catalogue en ligne, sans retélécharger l'application. Un plugin peut embarquer un moteur Python que le hub lance et surveille. Le même code tourne sur Windows et Android.

  • Environ 13 Mo, contre plus de 100 avec Electron.
  • Paquets vérifiés par empreinte SHA-256 avant installation.
  • Synchronisation entre appareils sans écraser une modification faite ailleurs.

Code et architecture

Application Android

Tauri · Rust · React · Android

ExziFit, la musculation avec un personnage RPG

En cours de développement, déjà utilisée par des amis. Une série se note en deux gestes, d'une main, en mode avion, et l'app dit quelle charge mettre sur la barre : pourcentage du 1RM, recalé série après série par le ressenti (RIR).

  • Stats du personnage calculées depuis l'historique réel : elles baissent quand l'entraînement s'arrête, le jeu n'est jamais une monnaie.
  • Données locales en JSON lisible, sauvegardes relues et vérifiées.
  • Parcours complets rejoués avant chaque publication, agent de QA piloté par une IA locale.

Code et choix de conception

Extraction de données

Python · Tesseract · WebSocket

Lire un écran en temps réel, sans rien compter deux fois

Un moteur lit une zone d'écran en continu et en tire des événements structurés, comptés une fois et une seule, même quand l'affichage défile, se répète ou est mal lu. Exemple : le coût réel des plats d'un restaurant, lu dans le logiciel de commande de son grossiste, qui n'offre pas d'API.

  • Déduplication par position, tolérante aux erreurs de lecture.
  • Ce qui est ambigu est mis de côté, jamais compté d'office.
  • Sessions réelles rejouées hors ligne, 120 tests.

Étude de cas et code

Infrastructure

Proxmox · Docker · Nextcloud · restic

Un serveur fiable pour une petite structure

Un modèle complet, tiré d'une installation en service : fichiers, mots de passe et documents scannés sur un mini PC. L'effort porte sur ce qui dure : sauvegardes sur trois niveaux, restauration testée, surveillance, et des retours d'incident écrits.

Modèle et documentation

Aide à la décision

TypeScript · Web Worker · Monte-Carlo

Planificateur de croisements, planifier par la simulation

Quand chaque décision a un résultat aléatoire, l'outil simule des centaines de parties pour chaque option, toutes sur les mêmes tirages : l'écart mesuré vient du choix, pas du hasard. Modèle calibré sur des données réelles, calcul hors du fil principal, sous la seconde.

Essayer la démo Code, 63 tests

TypeScript · React · Vitest

Budget du foyer

Ce qu'il reste vraiment à dépenser : opérations récurrentes calculées, factures annuelles lissées sur les mois qui les précèdent, période de paie à paie.

Démo Code, 15 tests

TypeScript · SVG · Python

Courbe de croissance

Les normes de l'OMS, converties par script depuis les tables officielles, et un graphique SVG écrit sans bibliothèque, net à l'écran comme à l'impression.

Démo Code

TypeScript · Canvas · API ARASAAC

Routines visuelles

Des routines en pictogrammes pour enfants, imprimées en bande A4 ou suivies pas à pas sur tablette. Le PDF est écrit octet par octet, sans bibliothèque.

Démo Code

TypeScript · pdf.js · pdf-lib

Éditeur PDF

Remplir et signer un PDF sans l'envoyer nulle part : le document ne quitte jamais la machine, et l'export reste un vrai PDF, texte compris.

Démo Code

03 Sites web

Une identité propre à chaque client, plusieurs langues si besoin, et des pages légères.

Client · React · i18next

NM traductions

Le site d'une traductrice jurée, en quatre langues dont le farsi, qui s'écrit de droite à gauche : toute la mise en page se retourne avec la langue.

Voir le site Code

Démo · React · Framer Motion

Atelier Vaudray

Pour une architecte d'intérieur fictive : une identité affirmée, des animations au service du contenu, environ 115 Ko de JavaScript.

Voir le site Code

Démo · React · Recharts

ServerWatch

Un tableau de bord de supervision : services, disponibilité, latence, charge et incidents, sur des données simulées.

Voir la démo Code

04 Comment je travaille

Comprendre avant d'écrire. Le besoin réel d'abord, puis la solution la plus simple qui y répond, sans dépendance superflue.

Tester ce qui compte. La logique métier est séparée de l'interface et couverte par des tests ; chaque bug corrigé en laisse un derrière lui.

Mesurer avant d'optimiser. Une mesure de départ, un changement à la fois, une nouvelle mesure.

Laisser un projet maintenable. Du code lisible et une documentation qui décrit l'état réel, pour que vous puissiez le reprendre sans moi.

Tom, développeur freelance

Un projet, une question ?

Décrivez-moi le besoin en quelques lignes. Je réponds sous 48 heures avec une première estimation, ou avec les questions qui manquent pour en faire une.

tom.exzitech@gmail.com Malt LinkedIn GitHub