118 lines
4.3 KiB
Markdown
118 lines
4.3 KiB
Markdown
# QueueMed — Salle d'attente virtuelle pour cabinets médicaux
|
|
|
|
> **Plateforme SaaS** de gestion de file d'attente numérique pour les médecins qui reçoivent sans rendez-vous.
|
|
> Conçue et développée par **William MERI** — v1.0.0
|
|
|
|
---
|
|
|
|
## Présentation
|
|
|
|
QueueMed transforme la salle d'attente physique en une file d'attente virtuelle accessible depuis n'importe quel smartphone. Les patients scannent un QR code anti-triche à l'accueil, suivent leur position en temps réel et reçoivent une alerte quand leur tour approche — leur permettant d'attendre où ils le souhaitent.
|
|
|
|
Les médecins bénéficient d'un tableau de bord complet pour gérer la file, appeler les patients, consulter des analytics d'affluence et gérer plusieurs cabinets depuis une interface unifiée.
|
|
|
|
---
|
|
|
|
## Fonctionnalités principales
|
|
|
|
| Fonctionnalité | Description |
|
|
|---|---|
|
|
| **QR Code anti-triche** | Token unique rotatif par cabinet (configurable : 5 min à 24h). Impossible de partager ou falsifier sa position. |
|
|
| **File d'attente temps réel** | Mise à jour instantanée via WebSocket (Socket.io). Position, temps estimé, numéro de ticket. |
|
|
| **Écran d'affichage** | Interface tablette/moniteur avec numéro appelé animé, ticker défilant et indicateur de connexion. |
|
|
| **Interface patient** | Aucun compte requis. Scan QR → suivi live → alerte au bon moment. |
|
|
| **Tableau de bord médecin** | Gestion de file, appel du suivant, marquage absent, réinitialisation, statistiques du jour. |
|
|
| **Multi-cabinets** | Un médecin peut gérer plusieurs salles d'attente depuis un seul compte. |
|
|
| **Tickets imprimables** | Numéro unique pour les patients sans smartphone. Inclusion totale garantie. |
|
|
| **Analytics avancés** | Affluence par heure, par jour, temps d'attente moyen, recommandations IA, export CSV. |
|
|
| **Abonnement mensuel** | Essai gratuit 30 jours, puis blocage si non abonné. Prêt pour intégration Stripe. |
|
|
| **Notifications push** | Alertes navigateur quand le tour approche (Web Push API). |
|
|
|
|
---
|
|
|
|
## Stack technique
|
|
|
|
| Couche | Technologie |
|
|
|---|---|
|
|
| **Frontend** | React 19, Tailwind CSS 4, shadcn/ui, Recharts, Framer Motion |
|
|
| **Backend** | Express 4, tRPC 11, Socket.io 4 |
|
|
| **Base de données** | MySQL/TiDB via Drizzle ORM |
|
|
| **Auth** | Manus OAuth (JWT, session cookie) |
|
|
| **QR Code** | `qrcode` npm package |
|
|
| **Tests** | Vitest (8 tests, 0 erreurs TS) |
|
|
| **Déploiement** | Manus Hosting (CDN, HTTPS, domaine personnalisé) |
|
|
|
|
---
|
|
|
|
## Architecture de la base de données
|
|
|
|
```
|
|
users → Comptes médecins (OAuth)
|
|
subscriptions → Abonnements (trial/active/expired/canceled)
|
|
clinics → Cabinets médicaux (1 médecin → N cabinets)
|
|
queueEntries → Entrées dans la file (token anti-triche, position, statut)
|
|
analyticsEvents → Événements pour les graphiques d'affluence
|
|
```
|
|
|
|
---
|
|
|
|
## Routes de l'application
|
|
|
|
| Route | Description | Accès |
|
|
|---|---|---|
|
|
| `/` | Landing page (hero, features, pricing, témoignages) | Public |
|
|
| `/dashboard` | Tableau de bord médecin | Authentifié |
|
|
| `/dashboard/clinics` | Gestion des cabinets | Authentifié |
|
|
| `/dashboard/queue/:clinicId` | Gestion de la file en temps réel | Authentifié |
|
|
| `/dashboard/analytics` | Analytics et export CSV | Authentifié |
|
|
| `/display/:clinicId` | Écran d'affichage tablette/moniteur | Public |
|
|
| `/queue/:token` | Interface patient (suivi temps réel) | Public |
|
|
| `/ticket/:entryId` | Page ticket imprimable | Public |
|
|
|
|
---
|
|
|
|
## Variables d'environnement
|
|
|
|
Toutes les variables sont injectées automatiquement par la plateforme Manus. Aucune configuration manuelle requise.
|
|
|
|
Pour l'intégration Stripe (à activer) :
|
|
- `STRIPE_SECRET_KEY` — Clé secrète Stripe
|
|
- `VITE_STRIPE_PUBLISHABLE_KEY` — Clé publique Stripe
|
|
- `STRIPE_WEBHOOK_SECRET` — Secret webhook Stripe
|
|
|
|
---
|
|
|
|
## Lancer le projet en local
|
|
|
|
```bash
|
|
pnpm install
|
|
pnpm db:push
|
|
pnpm dev
|
|
```
|
|
|
|
---
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
pnpm test
|
|
# 8 tests, 0 erreurs TypeScript
|
|
```
|
|
|
|
---
|
|
|
|
## Roadmap (prochaines versions)
|
|
|
|
- [ ] Intégration Stripe complète (checkout, webhooks, portail client)
|
|
- [ ] Notifications SMS (Twilio)
|
|
- [ ] Application mobile React Native
|
|
- [ ] Intégration agenda médecin (Doctolib API)
|
|
- [ ] Mode multi-praticiens par cabinet
|
|
- [ ] Rapports PDF automatiques hebdomadaires
|
|
|
|
---
|
|
|
|
## Auteur
|
|
|
|
**William MERI** — Conçu avec QueueMed v1.0.0
|
|
© 2026 QueueMed. Tous droits réservés.
|