Welcome to the Rolling Chat App repository! This project is a dynamic, real-time chat application designed to provide a seamless, intuitive, and engaging platform for online communication. Whether you're looking to chat with friends, collaborate with colleagues, or explore new connections, our app is tailored to facilitate effortless and enriching interactions.
With a focus on real-time messaging, Rolling Chat App caters to both personal and professional communication needs, offering a suite of features that enhance your experience. From individual chats to group collaborations, our platform ensures that every conversation is not just a message exchange, but a memorable connection.
- Real-Time Messaging: Experience instant messaging with real-time text exchange.
- Voice & Video Calls: Make direct voice and video calls for a more personal touch.
- Group Chats: Collaborate effectively with group chat functionality.
- File Sharing: Share files and media seamlessly.
- Secure Conversations: Privacy-focused with end-to-end encryption.
- Multi-Platform Support: Accessible across various devices and platforms.
This project is built using a range of modern technologies and tools:
- π§βπ» Programmming Language:
- Frontend: , ,
- Backend: ,
- Database: ,
- Real-Time Communication:
- Testing:
- Containerization:
- API:
- Logging: ,
- Deployment: ,
Rolling Chat App is crafted on a monolithic architecture with a strong and adaptable infrastructure, intentionally designed for an easy transition to microservices architecture as the app experiences growth and an increase in user traffic.
The application is divided into two main components: the Client and the Server, each operating within its own Docker container for ease of deployment and scalability.
The client side, built with React, offers a responsive and interactive user interface. It communicates with the server using RESTful APIs and Socket.io for real-time functionalities.
Key Features:
- Real-time messaging enabled by Socket.io
- Efficient state management using Zustand
- Responsive and modern UI design with TailwindCSS
- Seamless navigation and routing with React Router
Node.js and Express.js form the backbone of the server, which handles API requests, manages user sessions, and enables real-time communication.
Key Components:
- User Authentication and Authorization: Robust mechanisms to secure user access and manage permissions.
- Database Management: MongoDB serves as the database, with Mongoose as the ORM for efficient data handling.
- Real-Time Communication: Socket.io is utilized for managing real-time messaging and event handling.
- Mail Service: Utilizes Nodemailer for email communications, interfacing with an SMTP server to send out mail notifications and updates, enhancing user engagement and app functionality.
- Scheduled Tasks: Node-cron is employed for scheduled tasks, especially for database maintenance operations like cleaning up and archiving old data, thereby ensuring optimal database performance.
- Logging and Monitoring: Winston and Morgan are integrated for detailed logging, which aids in effective monitoring and troubleshooting of the server operations.
Data Flow:
- User Authentication: Secure login process with session management post-authentication.
- Real-Time Interactions: Bidirectional communication channel for messaging, established and maintained through Socket.io.
- Data Persistence: MongoDB effectively handles data storage, ensuring integrity and accessibility.
- Email Services: Automated email notifications facilitated by Nodemailer, linked to an SMTP server.
- Scheduled Operations: Regular database maintenance tasks scheduled using node-cron to optimize performance and resource utilization.
- Operational Monitoring: Continuous logging of server activities for efficient monitoring and quick resolution of issues.
These instructions will help you set up and run the Rolling Chat App on your local machine.
- Node.js
- npm (Node Package Manager)
- GIT
git clone https://github.com/oferGavrilov/Rolling-chat-messenger.git
cd rolling-chat-messenger
cd server
npm i && npm run dev
cd client
npm i && npm run dev
Open Your browser and navigate to 'http://localhost:3000' to view the Rolling App
If you prefer to use Docker, ensure you have Docker installed on your system. Then, follow these steps:
Build the Docker image for the server:
docker build -t rolling-chat-server .
Run the Docker container:
docker run -p 5000:5000 rolling-chat-server
Build the Docker image for client:
docker build -t rolling-chat-client .
Run the Docker container:
docker run -p 3000:3000 rolling-chat-client
The documentation is under construction π·ποΈ π¨