Présentation du Projet - its-abdou/slack-clone GitHub Wiki
Slack Clone — Plateforme de Communication Collaborative
Une solution moderne et évolutive pour la collaboration d'équipe en temps réel
Le Slack Clone est une plateforme de communication collaborative conçue pour offrir une alternative moderne et performante aux solutions existantes. Ce projet vise à fournir aux équipes, qu'elles soient en entreprise ou en milieu académique, un outil complet pour faciliter la communication, la collaboration et le partage d'informations.
Créer un espace de travail numérique unifié permettant aux équipes de :
- Communiquer efficacement en temps réel
- Collaborer sur des projets communs
- Organiser les conversations par thématiques
- Partager des ressources et des fichiers
- Décider collectivement via des outils de vote
Devenir une solution de référence pour les équipes de taille PME et les environnements académiques, en combinant simplicité d'utilisation, performance technique et coût maîtrisé.
- Envoi et réception de messages en temps réel via Stream et Socket.io
- Latence minimale (< 500ms) pour une expérience fluide
- Synchronisation multi-appareils automatique
- Indicateur de présence (en ligne, absent, occupé, hors ligne)
- Notification "en train d'écrire" pour améliorer l'interaction
- Threading de messages : Répondre dans des fils de discussion séparés
- Réactions emoji : Exprimer rapidement son opinion (👍, ❤️, 😄, etc.)
- Messages épinglés : Mettre en évidence les informations importantes
- Recherche : Retrouver facilement des messages anciens
- Historique complet : Accès illimité aux conversations passées
| Type | Description | Cas d'usage |
|---|---|---|
| Canaux publics | Visibles et accessibles à tous les membres | Annonces générales, discussions d'équipe |
| Canaux privés | Accessibles sur invitation uniquement | Projets confidentiels, équipes restreintes |
| Messages directs (DM) | Conversations privées 1-on-1 | Communication bilatérale |
| Groupes DM | Discussions privées multi-utilisateurs | Petits groupes de travail |
- Open Source : Code source accessible, modification possible
- Self-hosting : Déploiement sur infrastructure propre
- Pas de limite : Historique illimité, utilisateurs illimités
- Personnalisable : Adaptation aux besoins spécifiques
- Éducatif : Idéal pour apprendre les architectures modernes
- ✅ Messagerie temps réel complète
- ✅ Appels vidéo 1-on-1
- ✅ Partage de fichiers
- ✅ Authentification OAuth
- ✅ Déploiement Docker
- 🔄 Appels vidéo de groupe (10+ participants)
- 🔄 Recherche full-text avancée
- 🔄 Intégration webhooks sortants
- 🔄 Mode sombre (dark mode)
- Applications mobiles (iOS, Android)
- Workspaces multiples
- Rôles et permissions avancées
- Intégrations tierces (Jira, GitHub, etc.)
- Repository : github.com/its-abdou/slack-clone
- Issues : Signaler un bug ou proposer une fonctionnalité
- Discussions : Forum de discussions
Nous accueillons les contributions ! Consultez notre guide de contribution pour :
- Signaler des bugs
- Proposer de nouvelles fonctionnalités
- Soumettre des Pull Requests
- Améliorer la documentation
Navigation :
← Retour à l'Accueil | Page suivante : Architecture →
Slack Clone — Plateforme de Communication Collaborative
Une solution moderne et évolutive pour la collaboration d'équipe en temps réel
Le Slack Clone est une plateforme de communication collaborative conçue pour offrir une alternative moderne et performante aux solutions existantes. Ce projet vise à fournir aux équipes, qu'elles soient en entreprise ou en milieu académique, un outil complet pour faciliter la communication, la collaboration et le partage d'informations.
Créer un espace de travail numérique unifié permettant aux équipes de :
- Communiquer efficacement en temps réel
- Collaborer sur des projets communs
- Organiser les conversations par thématiques
- Partager des ressources et des fichiers
- Décider collectivement via des outils de vote
Devenir une solution de référence pour les équipes de taille PME et les environnements académiques, en combinant simplicité d'utilisation, performance technique et coût maîtrisé.
- Envoi et réception de messages en temps réel via Stream et Socket.io
- Latence minimale (< 500ms) pour une expérience fluide
- Synchronisation multi-appareils automatique
- Indicateur de présence (en ligne, absent, occupé, hors ligne)
- Notification "en train d'écrire" pour améliorer l'interaction
- Threading de messages : Répondre dans des fils de discussion séparés
- Réactions emoji : Exprimer rapidement son opinion (👍, ❤️, 😄, etc.)
- Messages épinglés : Mettre en évidence les informations importantes
- Recherche : Retrouver facilement des messages anciens
- Historique complet : Accès illimité aux conversations passées
| Type | Description | Cas d'usage |
|---|---|---|
| Canaux publics | Visibles et accessibles à tous les membres | Annonces générales, discussions d'équipe |
| Canaux privés | Accessibles sur invitation uniquement | Projets confidentiels, équipes restreintes |
| Messages directs (DM) | Conversations privées 1-on-1 | Communication bilatérale |
| Groupes DM | Discussions privées multi-utilisateurs | Petits groupes de travail |
- Création et suppression de canaux (avec permissions)
- Modification des paramètres (nom, description, type)
- Gestion des membres (ajout, retrait, rôles)
- Administration par les créateurs/admins
- Appels 1-on-1 : Haute qualité vidéo/audio
- Conférences de groupe : Jusqu'à 10+ participants simultanés
- Qualité adaptative : Ajustement automatique selon la bande passante
- Contrôles complets : Mute/unmute audio, activer/désactiver vidéo
- Partage d'écran : Présenter son bureau ou une fenêtre spécifique
- Enregistrement d'appels : Sauvegarder les réunions importantes
- Chat pendant l'appel : Échanger des messages sans interrompre
- Vue grille ou focus : Adapter l'affichage selon le contexte
✅ Images : JPG, PNG, GIF, SVG (aperçu intégré)
✅ Documents : PDF (aperçu dans le navigateur)
✅ Archives : ZIP, RAR (téléchargement)
✅ Office : DOCX, XLSX, PPTX
✅ Autres : TXT, JSON, CSV
- Drag & Drop : Glisser-déposer directement dans la conversation
- Aperçu intégré : Visualiser les images sans télécharger
- Métadonnées : Nom, taille, auteur, date d'upload
- Validation : Limite de taille (50 MB par fichier)
- Sécurité : Scan antivirus automatique (optionnel)
- Création facile : Question + options multiples (2 à 10)
- Vote simple : Un clic pour voter
- Résultats en temps réel : Graphiques à barres dynamiques
- Mode anonyme : Option de votes confidentiels
- Durée limitée : Possibilité de fixer une date d'expiration
- Exportation : Résultats téléchargeables
- Choix de dates pour une réunion
- Décisions d'équipe rapides
- Feedback sur des propositions
- Sondages d'opinion
- Email + Mot de passe : Authentification classique avec hashage bcrypt
- OAuth2 Google : Connexion via compte Google
- OAuth2 GitHub : Connexion via compte GitHub
- Magic Links : Connexion sans mot de passe par email
- Tokens JWT : Sessions sécurisées
- HTTPS obligatoire : Chiffrement des communications
- Rate limiting : Protection contre les attaques par force brute
- Validation des entrées : Prévention des injections (XSS, SQL)
- Permissions granulaires : Contrôle d'accès par rôle
| Type | Déclencheur | Affichage |
|---|---|---|
| Push navigateur | Nouveau message, mention | Notification système |
| Badge compteur | Messages non lus | Icône avec nombre |
| Highlights | Mention @username | Fond coloré dans la liste |
| Email (optionnel) | Inactivité prolongée | Résumé quotidien |
- Activer/désactiver par canal
- Choix du son de notification
- Mode "Ne pas déranger" avec plages horaires
- Fréquence des emails de résumé
-
Sentry : Tracking des erreurs en temps réel
- Capture automatique des exceptions
- Contexte détaillé (user, device, stack trace)
- Alertes par email/Slack sur erreurs critiques
-
Inngest : Gestion de tâches asynchrones
- Envoi d'emails différés
- Nettoyage de données obsolètes
- Génération de rapports périodiques
- Webhooks sortants
Profil : Équipes de 5 à 50 personnes
- Besoins : Communication fluide, réduction des emails internes
- Cas d'usage : Coordination projets, support client interne, brainstorming
- Avantages : Coût maîtrisé, déploiement rapide, pas de vendor lock-in
Profil : Enseignants, étudiants, groupes de recherche
- Besoins : Collaboration sur projets, discussions de cours, partage de ressources
- Cas d'usage : Groupes de TP, forums de cours, encadrement projets
- Avantages : Gratuit pour usage académique, historique illimité
Profil : Organisations à but non lucratif, équipes bénévoles
- Besoins : Coordination actions, communication asynchrone
- Cas d'usage : Planification d'événements, gestion de campagnes
- Avantages : Solution low-cost, hébergement flexible
Profil : Télétravail, équipes internationales
- Besoins : Communication temps réel malgré les fuseaux horaires
- Cas d'usage : Daily stand-ups async, partage de documentation
- Avantages : Threading pour conversations async, appels vidéo intégrés
Architecture et Technologies
Frontend Backend Database Services
──────── ─────── ──────── ────────
React 18 Node.js 20 MongoDB Atlas Clerk (Auth)
Vite Express.js Redis (Cache) Stream (Chat)
TailwindCSS Socket.io Stream Video
Zustand Mongoose Inngest (Jobs)
Sentry (Monitoring)
Note : Pour une description détaillée de l'architecture, consultez la page Architecture.
- Architecture microservices-ready
- Séparation frontend/backend
- Cache distribué (Redis)
- Load balancing horizontal
- Server-Side Rendering (SSR) optionnel
- Code splitting et lazy loading
- Optimisation des bundles (< 2 MB)
- CDN pour assets statiques
- Code modulaire et bien structuré
- Tests unitaires et d'intégration (70% coverage)
- Documentation inline (JSDoc, comments)
- Conventions de code strictes (ESLint, Prettier)
URL principale : https://github.com/its-abdou/slack-clone
slack-clone/
├── frontend/ # Application React
├── backend/ # API Node.js/Express
├── docs/ # Documentation technique
├── .github/ # Workflows CI/CD
├── docker-compose.yml # Orchestration Docker
└── README.md # Documentation principale
-
main: Version stable en production -
develop: Intégration continue (staging) -
feature/*: Développement de nouvelles fonctionnalités
| Document | Lien |
|---|---|
| README principal | [README.md](https://github.com/its-abdou/slack-clone/blob/main/README.md) |
| Guide d'installation | [Installation](Installation) |
| Documentation API |
/docs/api dans le repo |
| Changelog | [CHANGELOG.md](https://github.com/its-abdou/slack-clone/blob/main/CHANGELOG.md) |
| Fonctionnalité | Slack Clone | Slack | Microsoft Teams | Discord |
|---|---|---|---|---|
| Messagerie temps réel | ✅ | ✅ | ✅ | ✅ |
| Appels vidéo | ✅ | ✅ | ✅ | ✅ |
| Partage fichiers | ✅ | ✅ | ✅ | ✅ |
| Sondages | ✅ | ✅ | ||
| Open Source | ✅ | ❌ | ❌ | ❌ |
| Self-hosting | ✅ | ❌ | ❌ | ❌ |
| Coût | Gratuit | Freemium | Payant | Freemium |
| Customisation | ✅ Total |
- Open Source : Code source accessible, modification possible
- Self-hosting : Déploiement sur infrastructure propre
- Pas de limite : Historique illimité, utilisateurs illimités
- Personnalisable : Adaptation aux besoins spécifiques
- Éducatif : Idéal pour apprendre les architectures modernes
- ✅ Messagerie temps réel complète
- ✅ Appels vidéo 1-on-1
- ✅ Partage de fichiers
- ✅ Authentification OAuth
- ✅ Déploiement Docker
- 🔄 Appels vidéo de groupe (10+ participants)
- 🔄 Recherche full-text avancée
- 🔄 Intégration webhooks sortants
- 🔄 Mode sombre (dark mode)
- Applications mobiles (iOS, Android)
- Workspaces multiples
- Rôles et permissions avancées
- Intégrations tierces (Jira, GitHub, etc.)
- Repository : [github.com/its-abdou/slack-clone](https://github.com/its-abdou/slack-clone)
- Issues : [Signaler un bug ou proposer une fonctionnalité](https://github.com/its-abdou/slack-clone/issues)
- Discussions : [Forum de discussions](https://github.com/its-abdou/slack-clone/discussions)
Nous accueillons les contributions ! Consultez notre [guide de contribution](Contributions) pour :
- Signaler des bugs
- Proposer de nouvelles fonctionnalités
- Soumettre des Pull Requests
- Améliorer la documentation
Navigation :
← [Retour à l'Accueil](Accueil) | [Page suivante : Architecture →](Architecture)