266 lines
7.8 KiB
Markdown
Executable File
266 lines
7.8 KiB
Markdown
Executable File
# LeDiscord - Plateforme communautaire pour groupe d'amis
|
||
|
||
## đŻ Description
|
||
|
||
LeDiscord est une plateforme web privée pour gérer la vie sociale d'un groupe d'amis. Elle permet de :
|
||
|
||
- đč **Vlogs** : Partager des vlogs vidĂ©o avec le groupe
|
||
- đž **Albums** : CrĂ©er des albums photos/vidĂ©os pour les soirĂ©es et vacances
|
||
- đ
**ĂvĂ©nements** : Organiser des Ă©vĂ©nements avec systĂšme de prĂ©sence
|
||
- đŹ **Publications** : Poster des actualitĂ©s et mentionner des amis
|
||
- đ **Statistiques** : Visualiser des stats fun sur le groupe
|
||
- đ„ **Taux de prĂ©sence** : Suivre la participation aux Ă©vĂ©nements
|
||
- đ **Notifications** : Recevoir des alertes par email et dans l'app
|
||
- đĄïž **Admin** : Dashboard pour gĂ©rer l'espace de stockage et les utilisateurs
|
||
- đ« **Tickets** : SystĂšme de support et de gestion des demandes
|
||
- âčïž **Informations** : Gestion d'informations publiques et privĂ©es
|
||
|
||
## đ Technologies
|
||
|
||
### Backend
|
||
- **Python 3.11** avec FastAPI
|
||
- **PostgreSQL** pour la base de données
|
||
- **JWT** pour l'authentification
|
||
- **SQLAlchemy** comme ORM
|
||
- **Alembic** pour les migrations
|
||
- **Celery** pour les tĂąches asynchrones (notifications)
|
||
- **PIL (Pillow)** pour le traitement d'images
|
||
- **OpenCV** pour la génération de miniatures vidéo
|
||
|
||
### Frontend
|
||
- **Vue.js 3** avec Composition API
|
||
- **Vite** pour le build
|
||
- **Tailwind CSS** pour le style
|
||
- **Pinia** pour la gestion d'état
|
||
- **Vue Router** pour la navigation
|
||
- **Axios** pour les appels API
|
||
|
||
### Infrastructure
|
||
- **Docker** et Docker Compose
|
||
- **Volumes mappés** pour le stockage des médias
|
||
|
||
## đ Structure du projet
|
||
|
||
```
|
||
LeDiscord/
|
||
âââ backend/
|
||
â âââ api/routers/ # Routes API (auth, events, albums, etc.)
|
||
â âââ models/ # ModĂšles SQLAlchemy
|
||
â âââ schemas/ # SchĂ©mas Pydantic
|
||
â âââ config/ # Configuration
|
||
â âââ utils/ # Utilitaires (sĂ©curitĂ©, email, etc.)
|
||
â âââ app.py # Application principale
|
||
âââ frontend/
|
||
â âââ src/
|
||
â â âââ views/ # Pages Vue
|
||
â â âââ layouts/ # Layouts de l'app
|
||
â â âââ stores/ # Stores Pinia
|
||
â â âââ router/ # Configuration du router
|
||
â â âââ utils/ # Utilitaires
|
||
â âââ package.json
|
||
âââ uploads/ # Dossier des mĂ©dias uploadĂ©s (mappĂ© sur NAS)
|
||
âââ docker-compose.yml # Configuration Docker
|
||
âââ Makefile # Commandes utiles
|
||
âââ env.example # Variables d'environnement d'exemple
|
||
âââ README.md
|
||
```
|
||
|
||
## đ ïž Installation et dĂ©marrage
|
||
|
||
### Prérequis
|
||
- Docker et Docker Compose installés
|
||
- Port 8000 (backend), 5173 (frontend) et 5432 (PostgreSQL) disponibles
|
||
- Git pour cloner le projet
|
||
|
||
### 1. **Cloner le projet**
|
||
```bash
|
||
git clone <votre-repo-github>
|
||
cd LeDiscord
|
||
```
|
||
|
||
### 2. **Configuration de l'environnement**
|
||
```bash
|
||
# Copier le fichier d'exemple
|
||
cp env.example .env
|
||
|
||
# Ăditer le fichier .env avec vos valeurs
|
||
nano .env
|
||
```
|
||
|
||
**Variables importantes Ă modifier :**
|
||
- `DB_PASSWORD` : Mot de passe fort pour la base de données
|
||
- `JWT_SECRET_KEY` : Clé secrÚte trÚs longue et aléatoire
|
||
- `ADMIN_PASSWORD` : Mot de passe admin (Ă changer absolument !)
|
||
- `SMTP_USER` et `SMTP_PASSWORD` : Configuration email (optionnel)
|
||
|
||
### 3. **Démarrer l'application**
|
||
```bash
|
||
# Démarrer tous les services
|
||
make start
|
||
|
||
# Ou manuellement
|
||
docker-compose up --build -d
|
||
```
|
||
|
||
### 4. **Accéder à l'application**
|
||
- **Frontend** : http://localhost:5173
|
||
- **API Docs** : http://localhost:8000/docs
|
||
- **Admin** : Se connecter avec les identifiants admin définis dans `.env`
|
||
|
||
## đ€ Compte administrateur par dĂ©faut
|
||
- Email : `admin@lediscord.com`
|
||
- Mot de passe : Celui défini dans votre fichier `.env`
|
||
|
||
## đ§ DĂ©veloppement
|
||
|
||
### Commandes utiles (Makefile)
|
||
```bash
|
||
make help # Afficher l'aide
|
||
make start # Démarrer l'application
|
||
make stop # ArrĂȘter l'application
|
||
make restart # Redémarrer l'application
|
||
make logs # Voir les logs
|
||
make build # Reconstruire les images Docker
|
||
make clean # Nettoyer les conteneurs et volumes
|
||
make install # Installer les dépendances localement
|
||
```
|
||
|
||
### Développement local
|
||
```bash
|
||
# Backend
|
||
make dev-backend
|
||
|
||
# Frontend
|
||
make dev-frontend
|
||
```
|
||
|
||
### AccĂšs aux conteneurs
|
||
```bash
|
||
make shell-backend # Shell dans le conteneur backend
|
||
make shell-db # psql dans PostgreSQL
|
||
```
|
||
|
||
## đ FonctionnalitĂ©s principales
|
||
|
||
### Authentification
|
||
- Inscription/Connexion avec JWT
|
||
- Tokens d'accÚs sécurisés
|
||
- Protection des routes
|
||
- Gestion des permissions admin/user
|
||
|
||
### ĂvĂ©nements
|
||
- Création d'événements avec date, lieu, description
|
||
- SystĂšme de prĂ©sence (prĂ©sent/absent/peut-ĂȘtre)
|
||
- Notifications automatiques aux membres
|
||
- Taux de présence calculé automatiquement
|
||
|
||
### Albums & Médias
|
||
- Upload de photos/vidéos
|
||
- Albums liés aux événements
|
||
- Génération automatique de miniatures
|
||
- Gestion de l'espace de stockage
|
||
- Support multi-fichiers avec drag & drop
|
||
|
||
### Vlogs
|
||
- Upload de vidéos
|
||
- Compteur de vues
|
||
- Miniatures personnalisées
|
||
- Génération automatique de miniatures
|
||
|
||
### Publications
|
||
- Posts avec mentions d'utilisateurs
|
||
- Notifications lors des mentions
|
||
- Timeline chronologique
|
||
- Support des images
|
||
|
||
### Statistiques
|
||
- Taux de présence par utilisateur
|
||
- Membre le plus actif
|
||
- Statistiques fun personnalisables
|
||
|
||
### Administration
|
||
- Dashboard de gestion
|
||
- Monitoring de l'espace disque
|
||
- Gestion des utilisateurs
|
||
- Nettoyage des fichiers orphelins
|
||
- Gestion des tickets de support
|
||
|
||
### Tickets
|
||
- SystĂšme de support complet
|
||
- Gestion des priorités et statuts
|
||
- Upload de captures d'écran
|
||
- Notes administrateur
|
||
- Assignation aux admins
|
||
|
||
### Informations
|
||
- Gestion d'informations publiques/privées
|
||
- SystÚme de catégories
|
||
- Priorités d'affichage
|
||
- Interface d'administration
|
||
|
||
## đ SĂ©curitĂ©
|
||
|
||
- Authentification JWT
|
||
- Mots de passe hashés avec bcrypt
|
||
- Protection CORS configurée
|
||
- Validation des types de fichiers
|
||
- Limitation de la taille des uploads
|
||
- Permissions par rĂŽle (admin/user)
|
||
- Variables d'environnement sécurisées
|
||
|
||
## đ§ Roadmap / AmĂ©liorations futures
|
||
|
||
- [ ] Application mobile (React Native ou PWA)
|
||
- [ ] Notifications push sur mobile
|
||
- [ ] Chat en temps réel
|
||
- [ ] Calendrier partagé
|
||
- [ ] Sondages et votes
|
||
- [ ] Cagnotte pour les événements
|
||
- [ ] Export des photos d'un événement
|
||
- [ ] Mode sombre
|
||
- [ ] SystÚme de likes/réactions
|
||
- [ ] Historique d'activité détaillé
|
||
|
||
## đ Checklist de dĂ©ploiement
|
||
|
||
### Avant de commiter sur GitHub
|
||
- [ ] Vérifier que `.env` est dans `.gitignore`
|
||
- [ ] Vérifier que `uploads/` est dans `.gitignore`
|
||
- [ ] Vérifier que `postgres_data/` est dans `.gitignore`
|
||
- [ ] Tester que l'application démarre correctement
|
||
|
||
### Sur la nouvelle machine
|
||
- [ ] Cloner le repository
|
||
- [ ] Copier `env.example` vers `.env`
|
||
- [ ] Modifier les variables dans `.env`
|
||
- [ ] Lancer `make start`
|
||
- [ ] Vérifier l'accÚs à l'application
|
||
|
||
## đ DĂ©pannage
|
||
|
||
### ProblĂšmes courants
|
||
1. **Ports déjà utilisés** : Vérifiez que 8000, 5173 et 5432 sont libres
|
||
2. **Permissions Docker** : Assurez-vous d'ĂȘtre dans le groupe docker
|
||
3. **Variables d'environnement** : Vérifiez que `.env` est correctement configuré
|
||
4. **Base de données** : Vérifiez que PostgreSQL peut démarrer
|
||
|
||
### Logs et debugging
|
||
```bash
|
||
make logs # Voir tous les logs
|
||
make logs-backend # Logs du backend uniquement
|
||
make logs-frontend # Logs du frontend uniquement
|
||
make logs-db # Logs de la base de données
|
||
```
|
||
|
||
## đ Licence
|
||
|
||
Projet privé - Tous droits réservés
|
||
|
||
## đ€ Contact
|
||
|
||
Pour toute question sur le projet, contactez l'administrateur.
|
||
|
||
---
|
||
|
||
**Note** : Ce projet est conçu pour un usage privé entre amis. Assurez-vous de configurer correctement la sécurité avant tout déploiement en production.
|