From 025a5d6423ea4f684bca2ae9cdf6af2f7d1a342b Mon Sep 17 00:00:00 2001 From: tarzzan Date: Wed, 20 May 2026 03:04:17 +0000 Subject: [PATCH] Add "Installation" --- Installation.md | 284 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 Installation.md diff --git a/Installation.md b/Installation.md new file mode 100644 index 0000000..7b34c03 --- /dev/null +++ b/Installation.md @@ -0,0 +1,284 @@ +# 🚀 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 + +```bash +git clone https://git.cosmolan.fr/tarzzan/queue-med.git +cd queue-med +``` + +### 2. Installer les DĂ©pendances + +```bash +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` : + +```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 + +```bash +pnpm db:push +``` + +### 5. Lancer le Serveur + +```bash +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 + +```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 + +```yaml +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 + +```bash +# 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 + +```bash +# 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 + +```bash +# 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 | + +--- + +
+ +**[[Home]] | [[Architecture-Technique]] | [[Roadmap]]** + +