BugFatal change de métier
Pendant trois ans, bugfatal.com a été une boutique. Des utilitaires Windows,
des licences à activer, des comptes clients, des paiements, des relances de
factures — et tout le code qui va avec : gestion de commandes, webhooks de
paiement, table users, sauvegardes à surveiller.
La société qui portait cette activité ferme. Je continue à développer, mais en mon nom propre, et gratuitement : des applications sur le Google Play Store, des outils Windows, des choses sur le web. Le site devait suivre.
Ce que j'ai supprimé
Tout. Comptes clients, base de données, système de licences, intégration de paiement, fichiers de commandes. Ce n'est pas de l'élagage, c'est un remplacement complet.
Le gain le plus intéressant n'est pas la simplicité du code — c'est que la quasi-totalité des données personnelles que le site manipulait a disparu avec la boutique. Un site qui ne stocke rien n'a rien à perdre, rien à chiffrer, rien à notifier en cas d'incident, et rien à supprimer quand quelqu'un exerce son droit à l'effacement. La conformité la moins coûteuse reste celle qu'on obtient en ne collectant pas.
Ce que j'ai gardé
Le nom de domaine, l'adresse /fr/privacy — elle est déclarée sur une fiche
Google Play, elle ne devait pas bouger — et l'habitude de tout mettre dans un
dépôt Git.
Le nouveau site
Laravel et Vue, comme mes autres projets, mais sans base de données. Le contenu — articles, pages légales, fiches d'applications — vit dans des fichiers Markdown versionnés :
content/
blog/fr/2026-08-09-bugfatal-change-de-metier.md
pages/fr/privacy.md
apps/bugfatal-times/fr/privacy.md
Publier un article, c'est ajouter un fichier et pousser. Le serveur voit le commit et redéploie. Corriger une faute dans les mentions légales laisse une trace horodatée dans l'historique Git, ce qui est un joli effet de bord quand le document en question est censé être opposable.
Deux détails qui ne se voient pas mais qui comptent :
Le rendu se fait côté serveur. Une page en Vue non pré-rendue arrive dans
le navigateur sous forme de <div id="app"> vide, remplie ensuite par du
JavaScript. C'est acceptable pour un tableau de bord ; c'est un pari inutile
quand la page est une politique de confidentialité qu'un robot de validation
doit pouvoir lire. Le rendu serveur d'Inertia règle la question, et si le
processus tombe, le site bascule tout seul sur un rendu client au lieu de
renvoyer une page blanche.
Rien n'est chargé depuis un tiers. Pas de polices distantes, pas de CDN, pas de script d'analytics. Non par militantisme, mais parce que chaque domaine tiers dans une page est une ligne de plus à écrire dans la politique de confidentialité, et un consentement de plus à demander. Une pile de polices système coûte zéro requête, zéro cookie et zéro paragraphe juridique.
La suite
Je vais écrire ici ce que j'apprends : ce que Google Play accepte et refuse, comment on empaquette une application Tauri pour Android sans y laisser sa santé mentale, et pourquoi la moitié de mes bugs de production viennent d'une différence entre SQLite et PostgreSQL.
Le flux est ici. Il n'y a pas de newsletter — il faudrait collecter des adresses.