A modern, feature-rich chat application built with React, Node.js, and MongoDB.
- 💬 Real-time messaging with WebSocket support
- 📞 Audio and video calls
- 🤝 Friend requests and management
- 📱 Responsive design for all devices
- 🌓 Light/Dark mode support
- 📎 File sharing capabilities
- 🎙️ Voice messages
- ⭐ Message favorites
- 📊 Read receipts
- 🔔 Real-time notifications
-
Frontend:
- React with TypeScript
- Tailwind CSS
- shadcn/ui components
- Socket.IO client
- Framer Motion for animations
-
Backend:
- Node.js with Express
- MongoDB with Mongoose
- Socket.IO for real-time communication
- JWT for authentication
- Node.js (v18 or higher)
- MongoDB database
- Git
- Clone the repository:
git clone <repository-url>
cd chat-app- Install dependencies:
npm install- Create a
.envfile in the root directory:
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLIENT_URL=http://localhost:5173
PORT=3000- Start the development server:
npm run dev- Start the backend server:
npm run serverThe application will be available at http://localhost:5173
├── src/
│ ├── components/ # React components
│ ├── context/ # React context providers
│ ├── services/ # API services
│ ├── lib/ # Utility functions
│ └── hooks/ # Custom React hooks
├── server/
│ ├── controllers/ # Route controllers
│ ├── models/ # Mongoose models
│ ├── routes/ # Express routes
│ └── middleware/ # Express middleware
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/profile- Get user profilePUT /api/auth/profile- Update user profile
POST /api/messages- Send a messageGET /api/messages/:conversationId- Get conversation messagesPUT /api/messages/:messageId/read- Mark message as readPUT /api/messages/:messageId/favorite- Toggle message favorite
GET /api/conversations- Get user conversationsPOST /api/conversations- Create new conversationGET /api/conversations/unread- Get unread message counts
POST /api/calls- Create a new callPUT /api/calls/:callId- Update call statusGET /api/calls/history- Get call history
POST /api/friends/request- Send friend requestPUT /api/friends/request/:requestId- Respond to friend requestGET /api/friends/requests- Get pending friend requests
Une application de chat moderne et riche en fonctionnalités, construite avec React, Node.js et MongoDB.
- 💬 Messagerie en temps réel avec support WebSocket
- 📞 Appels audio et vidéo
- 🤝 Gestion des demandes d'amis
- 📱 Design responsive pour tous les appareils
- 🌓 Support des modes clair/sombre
- 📎 Partage de fichiers
- 🎙️ Messages vocaux
- ⭐ Messages favoris
- 📊 Accusés de lecture
- 🔔 Notifications en temps réel
-
Frontend :
- React avec TypeScript
- Tailwind CSS
- Composants shadcn/ui
- Client Socket.IO
- Framer Motion pour les animations
-
Backend :
- Node.js avec Express
- MongoDB avec Mongoose
- Socket.IO pour la communication en temps réel
- JWT pour l'authentification
- Node.js (v18 ou supérieur)
- Base de données MongoDB
- Git
- Cloner le dépôt :
git clone <url-du-depot>
cd chat-app- Installer les dépendances :
npm install- Créer un fichier
.envà la racine du projet :
MONGODB_URI=votre_chaine_de_connexion_mongodb
JWT_SECRET=votre_secret_jwt
CLIENT_URL=http://localhost:5173
PORT=3000- Démarrer le serveur de développement :
npm run dev- Démarrer le serveur backend :
npm run serverL'application sera disponible à l'adresse http://localhost:5173
├── src/
│ ├── components/ # Composants React
│ ├── context/ # Providers de contexte React
│ ├── services/ # Services API
│ ├── lib/ # Fonctions utilitaires
│ └── hooks/ # Hooks React personnalisés
├── server/
│ ├── controllers/ # Contrôleurs de routes
│ ├── models/ # Modèles Mongoose
│ ├── routes/ # Routes Express
│ └── middleware/ # Middleware Express
POST /api/auth/register- Inscription d'un nouvel utilisateurPOST /api/auth/login- Connexion utilisateurGET /api/auth/profile- Obtenir le profil utilisateurPUT /api/auth/profile- Mettre à jour le profil utilisateur
POST /api/messages- Envoyer un messageGET /api/messages/:conversationId- Obtenir les messages d'une conversationPUT /api/messages/:messageId/read- Marquer un message comme luPUT /api/messages/:messageId/favorite- Basculer un message en favori
GET /api/conversations- Obtenir les conversations de l'utilisateurPOST /api/conversations- Créer une nouvelle conversationGET /api/conversations/unread- Obtenir le nombre de messages non lus
POST /api/calls- Créer un nouvel appelPUT /api/calls/:callId- Mettre à jour le statut d'un appelGET /api/calls/history- Obtenir l'historique des appels
POST /api/friends/request- Envoyer une demande d'amiPUT /api/friends/request/:requestId- Répondre à une demande d'amiGET /api/friends/requests- Obtenir les demandes d'ami en attente

