- Nature
- App iOS et Android
- Stack
- App iOSApp AndroidExpoReact NativeNestJSNext.jsPostgreSQLPostGISNFCONNX
Sur les applications de rencontre, le faux profil est la première source de méfiance : photos volées, arnaques sentimentales. Cajou part du principe inverse : l'app est gratuite et chaque personne est vérifiée une fois, à l'entrée, par la puce de sa pièce d'identité. Ensuite, on ne lui redemande rien. La règle de conception tient en une phrase : dur avec les faux, léger avec les vrais.
Ce que fait l'app
- Vérification en trois gestes, pensée pour durer moins de 90 secondes : poser sa carte au dos du téléphone, tourner la tête, prendre sa photo. La puce signée par l'État est lue en NFC, et aucune image du document n'est conservée.
- Des intentions séparées et étanches (Sérieux, Sans pression) : un profil distinct par mode, et personne ne peut savoir qu'un compte existe dans un autre mode.
- Découvrir au swipe avec des likes illimités, matchs, messagerie en temps réel, et un rendez-vous proposé en un geste dans un lieu partenaire.
- Ange gardien facultatif : un proche reçoit un lien pour vérifier que le rendez-vous se passe bien.
- Badges « Identité vérifiée » et « Prise dans l'app » sur les photos, signalement en trois gestes, écran « Mes données » avec chaque consentement retirable.
- Site public (accueil, pages villes, guides, comparatifs) avec liste d'attente, web app connectée et backoffice de modération. Français et anglais.
Stack et architecture
- Monorepo pnpm et Turborepo. App iOS et Android en Expo SDK 57 (React Native 0.86, expo-router, Reanimated 4, Vision Camera), avec un module natif maison en Swift et Kotlin pour lire la puce.
- API NestJS 11, Prisma sur PostgreSQL avec PostGIS, Redis, Socket.IO pour la messagerie, BullMQ pour les traitements. Site et web app en Next.js 16 et React 19.
- Données biométriques dans un coffre séparé : base distincte, gabarits chiffrés en enveloppe, chaque accès journalisé. Seul un processus dédié, sans accès à la base principale, y touche.
- Photos traitées par un worker isolé, sans base ni Internet : ré-encodage sans métadonnées (EXIF, GPS), contrôle de nudité par un modèle ONNX, et revue humaine dès qu'un cas est douteux.
- Connexion sans mot de passe (code SMS), position stockée déjà floutée, détection des demandes d'argent faite sur le téléphone sans lire les messages côté serveur.
Ce qui a été difficile
Vérifier les identités sans prestataire. Un service de vérification facture chaque tentative, échecs compris, ce qui rendait le coût d'acquisition intenable pour une app gratuite. La vérification est donc faite maison avec des briques open source : lecture de la puce et contrôle de la signature de l'État, détection du vivant, puis comparaison du selfie avec la photo signée de la puce. Un visage fabriqué doit tromper la comparaison avec une photo qu'on ne peut pas falsifier. Le téléphone ne rend jamais le verdict : les preuves partent scellées vers un service serveur isolé, qui établit les faits, et l'API applique la règle.
Autre écueil : les fichiers envoyés par les utilisateurs sont une surface d'attaque. Un décodeur d'image compromis ne doit rien pouvoir atteindre. Le traitement tourne dans un conteneur sans réseau sortant ni secret, qui écrit dans une zone d'attente ; c'est l'API qui contrôle le résultat et le publie.
État du projet
Le site cajou.app est en ligne, avec la liste d'attente. L'app tourne en build de test sur iPhone (TestFlight) contre l'API réelle, mais elle n'est pas encore publiée sur l'App Store ni sur Google Play : l'ouverture se fera ville par ville. Gratuite, avec un abonnement de confort optionnel qui n'achète jamais de visibilité.
Captures réalisées sur simulateur avec des profils de démonstration fictifs, générés par IA.



