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

7.8 KiB
Executable File
Raw Blame History

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

git clone <votre-repo-github>
cd LeDiscord

2. Configuration de l'environnement

# 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

# Démarrer tous les services
make start

# Ou manuellement
docker-compose up --build -d

4. Accéder à l'application

đŸ‘€ Compte administrateur par dĂ©faut

  • Email : admin@lediscord.com
  • Mot de passe : Celui dĂ©fini dans votre fichier .env

🔧 DĂ©veloppement

Commandes utiles (Makefile)

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

# Backend
make dev-backend

# Frontend
make dev-frontend

AccĂšs aux conteneurs

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

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.