Comment c'est construit
Aperçu de l'architecture
Une carte de haut niveau du codebase Keeplas : un monorepo Turborepo avec une application Next.js, un backend Convex et un package crypto isolé et restreint.
Structure du monorepo
Keeplas est un monorepo pnpm + Turborepo. La surface déployée est une unique application Next.js ; tout ce qui est sensible est isolé dans son propre package.
- check_circleapps/web -- application Next.js 16 App Router (la seule surface déployée)
- check_circlepackages/convex -- schéma, requêtes, mutations, actions et crons Convex
- check_circlepackages/crypto -- primitives zero-knowledge (RESTREINT, protégé par CODEOWNER)
- check_circlepackages/ui -- système de design shadcn / Radix partagé
La frontière crypto
Tout ce qui se trouve dans packages/crypto s'exécute uniquement dans le navigateur. Convex ne voit jamais votre phrase de récupération de 24 mots, votre clé maître ni les fragments Shamir bruts. Le serveur ne stocke que du texte chiffré AES-256-GCM, des clés enveloppées en ML-KEM-768 et des fragments enveloppés en ML-KEM-768. Le modèle de menace : même un backend totalement compromis ne peut pas lire le contenu des utilisateurs.
L'enveloppe d'audit
Chaque mutation qui touche votre Vault transporte une enveloppe d'audit signée. Le middleware Next.js applique un HMAC au contexte de la requête (IP, pays) avec un secret partagé ; Convex le revérifie et ajoute une entrée chaînée par hachage et infalsifiable au journal d'audit.
Authentification
L'authentification est sans mot de passe, bâtie sur Convex Auth : codes à usage unique par e-mail et WhatsApp, avec passkeys optionnels (WebAuthn) et TOTP. Le déverrouillage par appareil utilise un PIN, la biométrie ou une clé matérielle. Aucun mot de passe à divulguer ou à réinitialiser.
Lisez le code source
L'architecture complète et le protocole cryptographique se trouvent dans la documentation du dépôt.