Auto-hébergé plutôt qu'acheté
Le suivi des erreurs tourne sur une instance GlitchTip auto-hébergée sur notre propre infrastructure Scaleway — les rapports de plantage ne quittent jamais nos serveurs. Et ils ne vous contiennent pas : avant l'envoi, l'identité de l'utilisateur, l'IP, les cookies, les en-têtes, les jetons d'autorisation, le corps de la requête et la chaîne de requête sont retirés. Le corps est la partie qui compte — c'est là que se trouveraient sinon le contenu des notes et les requêtes de recherche. Le traçage de performance est désactivé par défaut. Les statistiques de visite de ce site se passent de cookies (Plausible, UE), et l'application elle-même n'en a aucune.
Des clés qui ne savent faire qu'une chose
Les clés d'accès suivent le principe du moindre privilège : chaque système ne reçoit que les droits dont il a réellement besoin. Exemple : le déploiement automatique de ce site ne détient aucune clé CDN à l'échelle du compte — seulement un jeton qui ne sait faire qu'une chose : vider le cache de ces pages. Les clés centrales, elles, restent dans le Secret Manager de Scaleway, pas dans des systèmes de build externes.
La séparation est dans la base, pas dans le code
Dans la plupart des services, c'est le code applicatif qui vous empêche de voir les données d'autrui — un « where user = … » oublié dans une seule requête suffit alors à provoquer une fuite. Chez Memexa, la séparation se situe une couche plus bas : PostgreSQL l'impose via la row-level security. Sans contexte utilisateur défini, la base ne renvoie aucune ligne — pas les mauvaises, aucune. Ce contexte est défini par transaction et disparaît à la fin de celle-ci : il ne peut pas passer à la connexion suivante issue du pool. Pour que cela reste vrai, un contrôle tourne avec les tests et se déclenche dès qu'une nouvelle table apparaît sans row-level security ou sans classification explicite : la construction échoue au lieu de passer en silence.
Ce que votre IA peut faire, c'est vous qui le décidez — et le reprenez
Claude, ChatGPT et Cursor ne reçoivent pas de passe-partout. L'accès passe par OAuth : avant d'autoriser, vous voyez quel client demande et où va l'accès, et vous confirmez vous-même. Le clipper de navigateur et l'accès IA complet ont des autorisations distinctes — le clipper peut déposer, pas fouiller votre fonds. Vous pouvez déconnecter un client à tout moment depuis le tableau de bord ; il existe en outre un point de révocation conforme au RFC 7009 pour les clients qui l'appellent d'eux-mêmes. Et le contrôle d'accès ne repose pas sur une porte centrale unique : chaque point d'entrée vérifie lui-même la session, pour qu'une erreur à un endroit n'ouvre pas tout.
Supprimer veut dire supprimer — dans cet ordre
Vous pouvez supprimer votre compte vous-même, avec confirmation par e-mail. Ce qui se passe ensuite est volontairement inversé : d'abord, tous les fichiers du stockage objet sont retirés — sur l'intégralité du préfixe utilisateur, y compris donc les fichiers orphelins qui ne correspondent plus à aucune entrée. Les enregistrements en base ne tombent qu'après. Si la suppression des fichiers échoue, toute l'opération est interrompue et votre compte reste en place, plutôt que de vous laisser avec les enregistrements effacés et les documents encore là. L'opération peut être relancée sans risque. Les contenus individuels se suppriment à tout moment, sans toucher au compte.
Les liaisons entre les deux
Chaque tronçon est chiffré : TLS 1.2 et au-delà en périphérie, les versions plus anciennes sont désactivées ; les connexions à la base tournent en verify-full, c'est-à-dire avec vérification du certificat et du nom d'hôte, pas seulement « chiffré d'une manière ou d'une autre ». La base se trouve sur un réseau privé sans adresse publique. Devant elle : un WAF et une protection anti-DDoS, et le serveur d'origine n'accepte que les requêtes venant du réseau du CDN — on ne l'atteint pas directement. Le conteneur applicatif tourne sans droits root, les dépendances sont construites depuis un lockfile figé, et le seul binaire externe dont nous avons besoin est épinglé à une version et à une somme de contrôle. Staging et production sont deux projets distincts, pas deux dossiers dans le même.