# 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 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.