# LeBonCoup - Spécifications Fonctionnelles ## Vue d'ensemble Plateforme de petites annonces inversée : les demandeurs publient leurs besoins gratuitement, les prestataires paient pour accéder aux demandes via un système de tokens. --- ## 1. Système d'Utilisateurs ### 1.1 Types d'utilisateurs - **Demandeurs** : Publient des demandes de services (gratuit) - **Prestataires (Pros)** : Achètent des tokens pour accéder aux demandes ### 1.2 Inscription/Connexion - Email + mot de passe - Pas de nom/prénom obligatoire - Pseudonyme auto-généré : "User_8x7f9a" - Email **jamais** stocké en clair (hashé avec SHA256 + salt) - Mot de passe hashé (Argon2 ou bcrypt) ### 1.3 Récupération de compte - Service support séparé - User entre son email → système calcule le hash → trouve le compte - Reset password par email - **Attention** : Changement de mot de passe = suppression de toutes les conversations --- ## 2. Système de Tokens ### 2.1 Achat de tokens **Packs prépayés uniquement :** - 10€ = 10 tokens - 25€ = 30 tokens (+20% bonus) - 50€ = 70 tokens (+40% bonus) - 100€ = 150 tokens (+50% bonus) **Paiement via Stripe :** - Carte bancaire - Apple Pay - Google Pay - PayPal (optionnel) ### 2.2 Utilisation des tokens **1 token = accès à 1 demande** **Tokens premium (optionnel v2) :** - 2 tokens = accès prioritaire - Permet de dépasser la limite de 5 pros (jusqu'à 6-7 max) **Pas d'expiration des tokens** (ou très longue : 12 mois) ### 2.3 Remboursement automatique - Si demande devient "pleine" entre filtrage et déblocage → refund auto - Si demande signalée comme frauduleuse → refund - Si demandeur fantôme (aucune réponse après 7 jours) → refund partiel --- ## 3. Publication de Demandes ### 3.1 Création de demande (gratuit) **Champs obligatoires :** - Titre (max 100 caractères) - Description détaillée - Catégorie (liste prédéfinie : plomberie, électricité, déménagement, etc.) - Localisation (ville/arrondissement, floutée publiquement) - Budget min/max **Limites anti-spam :** - Max 3 demandes actives simultanément par user - Modération automatique (scan de mots-clés suspects) - Review manuelle si détection de contenu suspect ### 3.2 Visibilité des demandes **Avant déblocage (pour les pros) :** - Nombre total de demandes correspondant aux filtres - **Aucun détail** (pas de titre, pas de preview) - Éventuellement : carte avec zones géographiques floutées (heatmap) **Après déblocage :** - Titre complet - Description complète - Localisation précise - Budget - Date de publication - Nombre de pros ayant déjà contacté (X/5) ### 3.3 Cycle de vie d'une demande **États :** - **Active** : moins de 5 pros l'ont débloquée - **Full** : 5 pros (ou 7 avec premium) l'ont débloquée - **Resolved** : demandeur marque comme résolu - **Expired** : 30 jours sans activité - **Deleted** : supprimée par le demandeur ou admin --- ## 4. Système de Filtres (Pros) ### 4.1 Filtres disponibles - **Géolocalisation** : ville, département, rayon en km - **Catégories** : sélection multiple - **Budget** : fourchette min/max - **Date de publication** : dernières 24h, 7 jours, 30 jours - **Urgence** : tag "urgent" (optionnel) ### 4.2 Affichage après filtrage ``` 🔍 37 demandes correspondent à vos critères Aperçu géographique (optionnel) : - Paris 11e : 5 demandes - Paris 18e : 8 demandes - 93 Seine-Saint-Denis : 12 demandes - 94 Val-de-Marne : 12 demandes Budget moyen : 300-800€ [Débloquer pour 37 tokens] [Débloquer en premium pour 74 tokens] ``` --- ## 5. Messagerie Chiffrée ### 5.1 Architecture **Chiffrement de bout en bout (E2E) :** - Clé de chiffrement dérivée de `email_clair + password_clair` (côté client uniquement) - Messages stockés chiffrés sur le serveur - Serveur **ne peut pas** déchiffrer **Stockage en "blob" :** - 1 conversation = 2 blobs chiffrés (1 pour chaque participant) - Chaque blob contient tout l'historique de la conversation - Pas de messages individuels stockés ### 5.2 Fonctionnalités messagerie - **Texte** : illimité - **Médias** (photos/vidéos - optionnel v2) : - Max 5 Mo par image - Max 50 Mo par vidéo - Stockage temporaire : 14 jours max - Cache client local (IndexedDB) ### 5.3 Notifications - Push notifications : "Nouveau message de Pro_8x7f9a" - Email notifications (opt-in) - Badge de messages non lus ### 5.4 Rétention des données **Conversations texte :** - Suppression automatique après **6 mois** d'inactivité - Warning 30 jours avant suppression - User peut exporter avant **Médias :** - Suppression automatique après **14 jours** - Warning 24h avant expiration - User peut télécharger avant **Changement de mot de passe :** - Suppression immédiate de tous les blobs de l'user - L'autre participant garde son blob (peut toujours lire) --- ## 6. Modération et Sécurité ### 6.1 Modération des demandes (publiques) **Scan automatique :** - Mots-clés interdits - Patterns suspects (combinaisons de mots) - Détection de services illégaux **Actions :** - Flag pour review manuelle - Blocage immédiat si contenu clairement illégal - Ban du user ### 6.2 Modération des messages (privés) **Système de "flags" client-side :** **Avant chiffrement, scan local (JavaScript) :** - Détection de numéros de téléphone - Détection d'emails - Détection de réseaux sociaux (@instagram, etc.) - Mots-clés suspects : "cash", "espèces", "discret", "sans facture" - Combinaisons suspectes **Flags envoyés au serveur (anonymes) :** ``` Conversation A-B : +2 flags (catégories: contact_externe, paiement_externe) ``` **Le serveur ne voit PAS le contenu, juste les compteurs.** **Actions automatiques par seuils :** - **10 flags** → Warning in-app - **25 flags** → Restriction temporaire (24h sans pouvoir envoyer de messages) - **50 flags** OU 3+ signalements → Ban automatique ### 6.3 Signalement par les users **User A signale User B :** - User A peut partager son blob déchiffré avec le support - Support review manuellement - Si confirmé problématique → ban de User B + refund des tokens **User B n'est pas informé** que son compte est sous investigation. --- ## 7. Fonctionnalités Avancées (v2) ### 7.1 Système de réputation (optionnel) - Score de confiance basé sur : - Ancienneté du compte - Nombre de flags reçus - Tokens dépensés (pros) / demandes résolues (demandeurs) - Visible publiquement (par pseudonyme) ### 7.2 Tokens premium - 2 tokens pour accès prioritaire - Passe outre la limite de 5 pros (slots 6-7 réservés aux premium) ### 7.3 Abonnements - 50€/mois = 60 tokens + accès illimité aux demandes "basiques" - Tokens servent pour demandes "premium" (gros budgets) ### 7.4 Export de données - User peut télécharger toutes ses conversations (JSON ou PDF) - Export de l'historique de tokens - Conforme RGPD (droit à la portabilité) --- ## 8. MVP - Périmètre Minimal ### Inclure : ✅ Inscription/connexion (email/password hashés) ✅ Achat de tokens (Stripe, packs fixes) ✅ Publication de demandes (gratuit, limite 3 actives) ✅ Filtres (géo, catégorie, budget) ✅ Système de déblocage avec tokens (max 5 pros) ✅ Messagerie texte simple (blob chiffré) ✅ Flags automatiques (modération soft) ✅ Signalement users ✅ Auto-refund si demande pleine ✅ Suppression auto conversations > 6 mois ### Exclure du MVP : ❌ Tokens premium ❌ Médias (photos/vidéos) ❌ Application mobile (web responsive suffit) ❌ Système de notation/avis ❌ Analytics avancés ❌ Abonnements --- ## 9. CGU et Conformité ### 9.1 Mentions obligatoires **Anonymat et privacy :** ``` - Vos échanges sont chiffrés de bout en bout - Nous ne pouvons pas lire vos messages - Votre email n'est jamais exposé publiquement - Pseudonymes utilisés sur la plateforme ``` **Modération :** ``` - Les demandes publiques sont modérées automatiquement - Les messages sont analysés localement avant chiffrement pour détecter des comportements interdits - En cas de signalement, des actions peuvent être prises ``` **Rétention des données :** ``` - Conversations supprimées après 6 mois d'inactivité - Médias supprimés après 14 jours - Warning avant suppression automatique - Changement de mot de passe = suppression de vos conversations ``` **Paiements et remboursements :** ``` - Tokens sans expiration (12 mois de validité) - Remboursement automatique en cas de demande indisponible - Pas de remboursement si demande légitime mais non aboutie ``` ### 9.2 RGPD - Données minimales collectées (email hashé, pas de nom/prénom) - Droit à l'export des données - Droit à la suppression du compte - Pas de revente de données - Cookies strictement nécessaires uniquement ### 9.3 Légal - Responsabilité limitée : plateforme de mise en relation - Modération proactive (détection automatique) - Coopération avec les autorités si requis - Interdiction stricte d'activités illégales (prostitution, drogue, travail au noir) --- ## 10. Roadmap Suggérée **Phase 1 - MVP (3-4 mois) :** - Inscription/auth - Tokens + Stripe - Demandes + filtres - Messagerie texte chiffrée - Modération basique **Phase 2 - Amélioration (2-3 mois) :** - Médias (photos/vidéos) - Tokens premium - Système de réputation - Analytics **Phase 3 - Scale (ongoing) :** - App mobile (React Native) - Abonnements - Notifications avancées - Support client amélioré --- **Date de création :** 2025-01-16 **Version :** 1.0 **Statut :** Draft pour validation