# QueueMed – Project TODO ## Phase 3 : Schéma DB & Design System - [x] Schéma Drizzle : tables users, clinics, queue_entries, subscriptions, analytics_events - [x] Migration DB (pnpm db:push) - [x] Design system : palette teal/orange cinématique dans index.css - [x] Polices Google Fonts (Inter + Space Grotesk) ## Phase 4 : Landing Page & Auth Médecin - [x] Landing page cinématique avec hero, features, pricing - [x] Page d'inscription / connexion médecin (OAuth Manus) - [x] Middleware de vérification d'abonnement (trial/active/blocked) - [x] Page de blocage abonnement expiré ## Phase 5 : Dashboard Médecin & QR Code - [x] Dashboard médecin principal avec stats - [x] Gestion multi-cabinets (CRUD clinics) - [x] Génération QR code unique/aléatoire par cabinet (rotation anti-triche) - [x] Interface gestion file d'attente (appel prochain, skip, fermer) - [x] Affichage numéro en cours et temps estimé ## Phase 6 : Interface Patient & Écran d'Affichage - [x] Page patient après scan QR code (sans compte requis) - [x] Affichage position en temps réel dans la file - [x] Estimation du temps d'attente en live - [x] Écran d'affichage tablette/moniteur (route /display/:clinicId) - [x] WebSocket server (Socket.io) pour mises à jour temps réel - [x] Connexion WebSocket côté patient et écran d'affichage ## Phase 7 : Stripe & Abonnement - [x] Plans d'abonnement mensuel (Basic 29€, Pro 59€) - [x] Gestion essai gratuit 1 mois (auto-création à la première connexion) - [x] Page de paiement et gestion abonnement dans le dashboard - [x] Blocage automatique après expiration (subscriptionProcedure middleware) - [ ] Intégration Stripe réelle (webdev_add_feature stripe) – à activer - [ ] Webhook Stripe pour renouvellement/expiration automatique ## Phase 10 : Améliorations UX & Notifications - [x] Page patient enrichie (progression animée, alertes) - [x] Écran d'affichage avec animation de numéro appelé + indicateur connexion - [x] Landing page : section témoignages + perspective médecin/patient - [x] Export CSV des analytics par cabinet - [x] README.md et MANUS_HANDOFF.md - [x] Push GitHub final ## Phase 8 : Analytics, Notifications & Tickets - [x] Analytics : temps d'attente moyen, pics d'affluence, taux de présence - [x] Graphiques recharts dans le dashboard médecin (barres, camembert) - [x] Prédictions et recommandations IA basées sur l'historique - [x] Impression de ticket numérique (page imprimable) - [x] Attribution numéro unique pour patients sans téléphone (printTicket) - [ ] Notifications push/SMS (Twilio) – à intégrer ## Phase 9 : Tests, Audit & Documentation - [x] Tests Vitest pour les procédures tRPC critiques (8 tests, 2 fichiers) - [x] 0 erreur TypeScript - [x] Checkpoint final et commit GitHub ## Phase 11 : Finitions & Mode Opératoire - [x] Page SubscriptionPage améliorée (statut essai, compte à rebours, FAQ) - [x] Amélioration page PrintTicket (mise en page imprimable propre, styles @media print) - [x] Mode opératoire complet (guide médecin + guide patient + déploiement) en Markdown + PDF 10 pages - [x] Checkpoint final v1.2 ## Phase 12 : Améliorations UX & Robustesse (v1.3) - [x] Favicon SVG QueueMed (croix médicale + lignes de file) - [x] Manifest PWA (installable sur mobile, thème teal, langue fr) - [x] index.html : meta SEO, Open Graph, preconnect Google Fonts, lang=fr - [x] Onboarding wizard 3 étapes (cabinet, paramètres, succès) - [x] Page Centre d'aide avec FAQ 15 questions par catégorie - [x] Page Affiche QR imprimable A4 (styles @media print) - [x] Dashboard : bouton onboarding pour nouveaux utilisateurs, lien Aide - [x] QueueManagement : bouton Affiche QR dans section QR Code - [x] clinic.create retourne l'id du cabinet créé - [x] Tests Vitest : 13/13 passent (3 fichiers de test) - [x] 0 erreur TypeScript - [x] Checkpoint v1.3