Files
LeDiscord/README.md
2025-08-27 18:34:38 +02:00

266 lines
7.8 KiB
Markdown
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.