1 Abonnement-et-Monetisation
tarzzan edited this page 2026-05-20 03:04:06 +00:00

💳 Abonnement et Monétisation

Plans tarifaires, essai gratuit, cycle de vie et intégration Stripe.


Modèle Économique

QueueMed utilise un modèle SaaS par abonnement mensuel avec essai gratuit :

┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│  PARCOURS MONÉTISATION                                              │
│                                                                     │
│  Inscription ──▶ Essai gratuit (30j) ──▶ Choix du plan ──▶ Actif   │
│                        │                       │                    │
│                        │                       ├── Basic (29€/mois) │
│                        │                       └── Pro (59€/mois)   │
│                        │                                            │
│                        └── Pas de souscription ──▶ ❌ Bloqué         │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Plans Tarifaires

Essai Gratuit Basic Pro
Prix 0€ (30 jours) 29€/mois 59€/mois
Cabinets 1 2 Illimité
File d'attente Illimitée Illimitée Illimitée
QR anti-triche
Écran d'affichage
Tickets imprimables
Notifications push
Analytics basiques
Analytics avancés
Recommandations IA
Export CSV
Support Email Email Prioritaire
Notifications SMS 🔜 (v2.0)

Essai Gratuit

Déclenchement

L'essai gratuit est automatiquement créé à la première connexion du médecin :

Première connexion OAuth
         │
         ▼
┌─────────────────────────────────────────┐
│ INSERT INTO subscriptions               │
│ SET                                     │
│   userId = ?,                           │
│   plan = 'trial',                       │
│   status = 'trialing',                  │
│   trialStartedAt = NOW(),               │
│   trialEndsAt = NOW() + 30 DAYS         │
└─────────────────────────────────────────┘

Affichage dans le Dashboard

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│  ⏱️ Essai gratuit                                                │
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                                                         │   │
│  │  Il vous reste 23 jours d'essai gratuit                 │   │
│  │                                                         │   │
│  │  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  │   │
│  │  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░  │   │
│  │  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  │   │
│  │                                                         │   │
│  │  Expire le : 15 juin 2026                               │   │
│  │                                                         │   │
│  │  [ 💳 Choisir un plan ]                                 │   │
│  │                                                         │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Middleware de Vérification

subscriptionProcedure

Chaque procédure sensible passe par le middleware d'abonnement :

┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│  Requête tRPC                                                       │
│       │                                                             │
│       ▼                                                             │
│  ┌─────────────────────┐                                           │
│  │ protectedProcedure   │ ← Vérifie l'authentification              │
│  └──────────┬──────────┘                                           │
│             │                                                       │
│             ▼                                                       │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ subscriptionProcedure                                        │   │
│  │                                                             │   │
│  │  1. Récupère l'abonnement de l'utilisateur                  │   │
│  │  2. Vérifie le statut :                                     │   │
│  │                                                             │   │
│  │     status === 'trialing' ?                                 │   │
│  │       └── trialEndsAt > now() ? → ✅ Continuer              │   │
│  │                                   → ❌ FORBIDDEN (expiré)    │   │
│  │                                                             │   │
│  │     status === 'active' ?                                   │   │
│  │       └── currentPeriodEnd > now() ? → ✅ Continuer          │   │
│  │                                        → ❌ FORBIDDEN        │   │
│  │                                                             │   │
│  │     status === 'expired' | 'canceled' ?                     │   │
│  │       └── ❌ FORBIDDEN                                       │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│             │                                                       │
│             ▼                                                       │
│  ┌─────────────────────┐                                           │
│  │ Procédure métier     │ ← Exécution normale                       │
│  └─────────────────────┘                                           │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Page de Blocage

Quand l'abonnement expire, le médecin est redirigé vers /subscription/blocked :

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                                                         │   │
│  │           ⚠️ Votre essai a expiré                        │   │
│  │                                                         │   │
│  │  Votre période d'essai gratuit de 30 jours est          │   │
│  │  terminée. Pour continuer à utiliser QueueMed,          │   │
│  │  choisissez un plan d'abonnement.                       │   │
│  │                                                         │   │
│  │  ┌──────────────┐    ┌──────────────┐                  │   │
│  │  │  Basic       │    │  Pro         │                  │   │
│  │  │  29€/mois    │    │  59€/mois    │                  │   │
│  │  │              │    │              │                  │   │
│  │  │  2 cabinets  │    │  Illimité    │                  │   │
│  │  │  Analytics   │    │  Analytics   │                  │   │
│  │  │              │    │  + IA        │                  │   │
│  │  │ [Choisir]    │    │ [Choisir]    │                  │   │
│  │  └──────────────┘    └──────────────┘                  │   │
│  │                                                         │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Intégration Stripe (À Activer)

Statut Actuel

Composant État Description
Plans UI Implémenté Page abonnement avec plans
Middleware Implémenté Vérification statut
Page blocage Implémenté Redirection si expiré
Checkout Stripe 🔜 À activer Paiement réel
Webhooks 🔜 À activer Renouvellement auto
Portail client 🔜 À activer Gestion par le client

Activation

Pour activer Stripe, 3 clés sont nécessaires :

Variable Description Où la trouver
STRIPE_SECRET_KEY Clé secrète (serveur) Dashboard Stripe → API Keys
VITE_STRIPE_PUBLISHABLE_KEY Clé publique (frontend) Dashboard Stripe → API Keys
STRIPE_WEBHOOK_SECRET Secret webhook Dashboard Stripe → Webhooks

Flux Prévu

Patient clique "Choisir Basic"
         │
         ▼
┌─────────────────────────────────────────┐
│ 1. Créer Stripe Checkout Session        │
│ 2. Rediriger vers Stripe                │
│ 3. Patient paie                         │
│ 4. Stripe envoie webhook                │
│ 5. Serveur met à jour subscription      │
│ 6. Redirection vers dashboard           │
└─────────────────────────────────────────┘

FAQ Abonnement

Question Réponse
L'essai est-il vraiment gratuit ? Oui, 30 jours sans carte bancaire.
Que se passe-t-il après l'essai ? L'accès est bloqué jusqu'à souscription.
Puis-je changer de plan ? Oui, upgrade/downgrade à tout moment.
Comment annuler ? Depuis le portail client Stripe.
Mes données sont-elles supprimées ? Non, elles sont conservées 90 jours.
Y a-t-il un engagement ? Non, résiliation mensuelle sans frais.