Aller au contenu
← Tous les articles

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.