Initial commit: Club DynaSQY
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user