# Club DynaSQY - Application de Gestion Application web de gestion du club **Dyna Biz Coignières** : membres, invités, événements, honneurs/recommandations, absences, galerie photos, invitations, notifications push, éditeur de présentations/slideshow, exports et logs d'activité. ## Stack technique | Composant | Technologie | |-----------|------------| | Backend | Node.js 20 + Express | | Frontend | React 18 + Vite 5 + Tailwind 4 | | Base de données | MariaDB 10.11 (Docker) | | Authentification | JWT (jsonwebtoken) | | Notifications push | web-push (VAPID) | | Emails | Nodemailer (SMTP Infomaniak) | | PWA | vite-plugin-pwa (service worker injectManifest) | ## Déploiement ```bash cd /opt/dyna docker compose up -d # Initialiser les mots de passe des utilisateurs docker compose exec backend node seed.js ``` L'application est accessible sur le port **3001** (frontend nginx) qui proxy vers le backend sur le port **3000**. ## Structure ``` /opt/dyna/ ├── backend/ │ ├── server.js # Point d'entrée Express │ ├── config/db.js # Connexion MariaDB │ ├── middleware/auth.js # JWT middleware │ ├── controllers/ # Logique métier │ ├── routes/ # Routes API │ └── seed.js # Initialisation des comptes ├── frontend/ │ └── src/ # Composants React + PWA ├── database/ # Scripts SQL ├── uploads/ # Fichiers uploadés (bind mount) ├── gallery/ # Photos galerie (bind mount) ├── docker-compose.yml # Stack complète └── nginx.conf # Config reverse proxy ``` ## Variables d'environnement (backend) | Variable | Description | Valeur par défaut | |----------|-------------|-------------------| | `DB_HOST` | Host MariaDB | `db` (service Docker) | | `DB_PORT` | Port MariaDB | `3306` | | `DB_USER` | Utilisateur BDD | `dynausr` | | `DB_PASSWORD` | Mot de passe BDD | `L0relei69` | | `DB_NAME` | Nom de la BDD | `dynasqy` | | `JWT_SECRET` | Secret JWT | `L0relei69SuperSecret2026` | | `PORT` | Port backend | `3000` | | `SMTP_HOST` | Serveur SMTP | `mail.infomaniak.com` | | `SMTP_PORT` | Port SMTP | `465` | | `SMTP_USER` | Email SMTP | `dyna@secourit.fr` | | `SMTP_PASS` | Mot de passe SMTP | `cAq0cF9t41BE458sdAuzea45215` | | `EMAIL_FROM` | Email expéditeur | `dyna@secourit.fr` | | `PUBLIC_URL` | URL publique | `https://dyna.secourit.fr` | | `VAPID_PUBLIC_KEY` | Clé publique VAPID | configuré dans docker-compose | | `VAPID_PRIVATE_KEY` | Clé privée VAPID | configuré dans docker-compose | ## Développement ```bash # Backend cd backend npm install node seed.js # Générer les mots de passe node server.js # Démarre sur :3000 # Frontend cd frontend npm install npm run dev # Vite sur :5173 avec proxy /api -> :3000 ``` ## Domaine de production - **URL** : https://dyna.secourit.fr - **LXC** : 103 (IP 10.10.10.20) - **SSL** : Let's Encrypt via Nginx Proxy Manager - **Preprod** : https://dyna-preprod.secourit.fr (LXC 110, port 3101) ## Comptes de test | Rôle | Email | Mot de passe | |------|-------|--------------| | Admin | admin@dynasqy.fr | admin123 | | Membre | jean.dupont@email.fr | member123 | | Membre | marie.durand@email.fr | member123 |