2025-08-31 16:23:13 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00
2025-08-27 18:34:38 +02:00

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.

Description
No description provided
Readme 1.9 MiB
Languages
Vue 63.8%
Python 31.6%
JavaScript 3.9%
CSS 0.3%
Dockerfile 0.3%
Other 0.1%