98 lines
3.3 KiB
Markdown
98 lines
3.3 KiB
Markdown
# 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 |
|