No results
1
Installation
tarzzan edited this page 2026-05-20 03:04:17 +00:00
Table of Contents
- 🚀 Installation et Déploiement
🚀 Installation et Déploiement
Guide de démarrage rapide, configuration et déploiement en production.
Prérequis
| Outil | Version | Usage |
|---|---|---|
| Node.js | 18+ | Runtime JavaScript |
| pnpm | 8+ | Gestionnaire de paquets |
| MySQL | 8+ (ou TiDB) | Base de données |
| Git | 2+ | Gestion de version |
Démarrage Rapide
1. Cloner le Dépôt
git clone https://git.cosmolan.fr/tarzzan/queue-med.git
cd queue-med
2. Installer les Dépendances
pnpm install
3. Configurer l'Environnement
Les variables d'environnement sont injectées automatiquement par la plateforme Manus. Pour un développement local, créez un fichier .env :
# Base de données
DATABASE_URL=mysql://user:password@localhost:3306/queuemed
# Auth
JWT_SECRET=your-secret-key-here
VITE_APP_ID=your-manus-app-id
OAUTH_SERVER_URL=https://api.manus.im
VITE_OAUTH_PORTAL_URL=https://manus.im/app-auth
# Stripe (optionnel)
STRIPE_SECRET_KEY=sk_test_...
VITE_STRIPE_PUBLISHABLE_KEY=pk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
4. Initialiser la Base de Données
pnpm db:push
5. Lancer le Serveur
pnpm dev
Le serveur démarre sur http://localhost:3000.
Structure des Commandes
| Commande | Description |
|---|---|
pnpm dev |
Serveur de développement (hot reload) |
pnpm build |
Build de production |
pnpm start |
Démarrer en production |
pnpm test |
Exécuter les tests Vitest |
pnpm db:push |
Appliquer les migrations Drizzle |
npx tsc --noEmit |
Vérifier les types TypeScript |
npx drizzle-kit generate |
Générer une migration |
Déploiement Docker
Dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
FROM node:20-alpine AS runner
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3000
CMD ["node", "dist/server/index.js"]
Docker Compose
version: "3.8"
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=mysql://queuemed:password@db:3306/queuemed
- JWT_SECRET=${JWT_SECRET}
- NODE_ENV=production
depends_on:
db:
condition: service_healthy
restart: unless-stopped
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: queuemed
MYSQL_USER: queuemed
MYSQL_PASSWORD: password
volumes:
- mysql_data:/var/lib/mysql
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
mysql_data:
Lancement
# Démarrer les services
docker compose up -d
# Appliquer les migrations
docker compose exec app pnpm db:push
# Voir les logs
docker compose logs -f app
Déploiement Manus (Recommandé)
QueueMed est conçu pour être déployé sur Manus Hosting :
┌─────────────────────────────────────────────────────────────────┐
│ │
│ DÉPLOIEMENT MANUS │
│ │
│ 1. Créer un checkpoint (webdev_save_checkpoint) │
│ 2. Cliquer "Publish" dans le panneau de gestion │
│ 3. Configurer le domaine personnalisé (optionnel) │
│ │
│ Inclus automatiquement : │
│ ✅ HTTPS / SSL │
│ ✅ CDN global │
│ ✅ Base de données MySQL │
│ ✅ Variables d'environnement │
│ ✅ Domaine .manus.space │
│ ✅ Scaling automatique │
│ │
└─────────────────────────────────────────────────────────────────┘
Configuration Avancée
Variables d'Environnement
| Variable | Obligatoire | Description |
|---|---|---|
DATABASE_URL |
✅ | Connexion MySQL/TiDB |
JWT_SECRET |
✅ | Secret pour signer les sessions |
VITE_APP_ID |
✅ | ID application Manus OAuth |
OAUTH_SERVER_URL |
✅ | URL backend OAuth |
VITE_OAUTH_PORTAL_URL |
✅ | URL portail login |
OWNER_OPEN_ID |
❌ | OpenID du propriétaire |
STRIPE_SECRET_KEY |
❌ | Clé Stripe (paiements) |
VITE_STRIPE_PUBLISHABLE_KEY |
❌ | Clé publique Stripe |
STRIPE_WEBHOOK_SECRET |
❌ | Secret webhook Stripe |
Ports
| Service | Port | Description |
|---|---|---|
| Express + Socket.io | 3000 | Serveur principal (HTTP + WS) |
| MySQL | 3306 | Base de données |
| Vite (dev) | 5173 | Frontend dev server (dev uniquement) |
Dépannage
| Problème | Solution |
|---|---|
ECONNREFUSED MySQL |
Vérifier que MySQL est démarré et accessible |
JWT_SECRET undefined |
Configurer la variable d'environnement |
| Socket.io déconnecté | Vérifier que le port 3000 est accessible (pas de proxy bloquant WS) |
| QR code ne s'affiche pas | Vérifier que le package qrcode est installé |
| Tests échouent | Exécuter pnpm install puis pnpm test |
| Build échoue | Vérifier npx tsc --noEmit pour les erreurs de types |
| File ne se met pas à jour | Vérifier la connexion WebSocket (indicateur vert) |
Tests
Exécution
# Tous les tests
pnpm test
# Avec couverture
pnpm test -- --coverage
# Un fichier spécifique
pnpm test -- server/onboarding.test.ts
Résultats Actuels
✓ server/auth.logout.test.ts (2 tests)
✓ server/onboarding.test.ts (6 tests)
✓ server/queue.test.ts (5 tests)
Test Files 3 passed (3)
Tests 13 passed (13)
Duration 1.2s
Monitoring
Logs Applicatifs
# Logs serveur
tail -f .manus-logs/devserver.log
# Logs console navigateur
tail -f .manus-logs/browserConsole.log
# Requêtes réseau
tail -f .manus-logs/networkRequests.log
Santé du Serveur
| Endpoint | Description |
|---|---|
GET / |
Landing page (vérifie le frontend) |
GET /api/trpc/auth.me |
Vérifie le backend + DB |
WebSocket connect |
Vérifie Socket.io |
🏥 QueueMed
Navigation
📖 Général
👥 Guides Utilisateur
⚙️ Technique
📊 Fonctionnalités
🔗 Liens Rapides
🏥 QueueMed — Gestion intelligente de file d'attente médicale | Développé par tarzzan | git.cosmolan.fr